Προς το περιεχόμενο

SQL simple query ...χερισμός NULL τιμών???


Petrakas

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα ,

 

Έστω οτι έχω τρεις πίνακες :

 

Table 1(sum1)

Table 2(sum2)

Table 3(sum3)

 

 

To sql ερώτημα είναι :

 

SELECT ([sum1]+[sum2]+[sum3]) AS total_sum

FROM Table1,Table2,TAble3;

 

αν υπόθεσουμε πως sum1=100 , sum2=200 kai sum3=100 τότε total_sum=400 ...

 

Αν όμως το sum2 πχ δεν έχει τιμή (είναι null δηλαδή ούτε καν μηδέν) το ερώτημα δεν εκτελείται(εκτελείται αλλα δεν βγάζει αποτέλεσμα)....πως θα χειριστώ αυτές τις null τιμές??

πχ στη ν περίπτωση που το sum2 δεν έχει τιμή θέλω να μου βγαίνει οτι totalsum=200 πως....????!

Δημοσ.

συνάρτηση?? χμ...βασικά που συντάσονται? στο SELECT ? κάποιο παράδειγμα σύνταξης μπορεις να παραθέσεις με βάσξ το παραπάνω παράδειγμα πινάκων πεδίων που έχω γράψει?

Δημοσ.

ο κώδικας που μου παραθέτεις φίλε random βγάζει ως αποτέλεσμα για sum1=100 sum2=0 και sum3=200 :

 

'100200'

 

εγώ θέλω να τα αθροίζει ....δλδ να βγάζει ως αποτέλεσμα '300'

Δημοσ.

και που να ξερουμε οτι αποθηκεύεις αριθμούς σε πεδια text?

 

SELECT CLng(Nz( a,0))+ CLng(Nz( b,0))+ CLng(Nz( c,0) ) AS Expr1 FROM...

 

μονο ενα record εχουν οι πινακες;

ισως θελει και join. next week that tutorial :)

 

υπαρχει και το f1 στην access. εντελώς magic button.

Δημοσ.

ε ναι, αλλο να υπάρχει ενα record με τιμη null se ena pedio, και αλλο να μην υπάρχει record.

το λεει και η λεξη.. SELECT αυτό απο εκέι..

αν δεν υπάρχει τιποτα δεν θα φέρει.

 

και η Nz(), λέει... φέρε μου το χ, και θα στο επιστρέψω, και αν αυτο ειναι null, θα επιστρέψω Ψ, (εδώ μηδέν)

 

αν δεν εχεις Χ να τις δώσεις, δεν παίζει.

 

...

τεσπα. οι πινακες σου ειναι τουλαχιστον περίεργοι.

1. γιατι να εχεις τρεις, και οχι εναν με 3 πεδία?

 

2. ή ένας πινακας, με 2 πεδία (pk, και sum) και 3 εγγραφές.

 

3. αν ειναι απαραιτητο να ειναι 3 πινακες, γιατι να εχουν ενα πεδιο ο καθενας, και όχι περισσότερα? (πχ ενα primary key, εκτος απο το sum)

 

αν κανεις ενα απο τα 3, δεν θα εχεις προβλημα.

 

στο κατω, κατω για να αποθηκευεις 3 νουμερα δεν χρειάζεσαι καν database. βαλτα σε ενα text file, ξεχνα την sql, και πιασε την vb.

Δημοσ.

opa ena ena......

 

1)katarxin to pardigma me ta tables eian eina aplo paradigma...i kanoniki vasi exei polous pinakes me diaforetika pedia o kahtenas (kai arithmo kai eidos) kai mono to sum einai koino....vasika einai eidi parastatikon....

 

2) otan enousa null sto sum sinepagete oti den tha ypirxe antistixo record se ayto ton pinaka ontos denj to diatiposa entelos sosta alla to to pano paradigma ayto edeixne!

 

3)gia an sas doso na katalavete ligo pio sigkekrimena to provlima....: Yparxei enas pinakas "promitheytes" o opios einai ena pros polla me alous 7 pinakes....o kathe pinakas antiprosopeyei ena parastatiko...

 

Etsi enas promitheytis mporei na exei timologia (xreoseis) kai epitages ,gramatia (pistoseis) alla oxi egrafes se metrita ...(opoy timologia--->pinakas, epitages--->pinakas ktl ktl...)alla enas alos mporei na toy exoume dosei kai metrita....pos tha vro to upolipo loipon ayrton to prom??? me auroisma ton sinolikon sum toy kathe pinaka...alla ean enas prom d3en exei se ena pnaka egrafes( pragma pithano) tote den bgenei ypoloipo...

 

 

min ta polilogo..to pano paradeigma einai poli aploiko alla kai antiprosopeytiko tou provlimatos poy thelo na liso....den thelo na alaksei omos i diataksi ton pinakoon gaiti stin vasi poy to tha to efarmoso den einai toso apla ta pragamta!

Δημοσ.

giati SQL milas an einai gia SQL 2000

 

SELECT (isnull(sum1,0)]+isnull(sum2,0)+isnull(sum3,0)) AS total_sum

FROM Table1,Table2,TAble3;

 

an einai oracle tote einai to

NVL

i to

NVL2 oracle 9 +

Δημοσ.

τοτε, πρεπει να αλλαξεις τα where, και οχι τα sums.

πρεπει να κανεις LEFT JOINs

 

se Access (pinakas Pelates εναντι 4 πινακων παραστατικων) :

 

>
SELECT 
Customers.CustomerID, 
Customers.CompanyName, 
Sum(EPITAGES.POSO) AS [sum Of EPITAGES_POSO], 
Sum(GRAMMATIA.POSO) AS [sum Of GRAMMATIA_POSO], 
Sum(METRHTA.POSO) AS [sum Of METRHTA_POSO], 
Sum(TIMOLOGIA.POSO) AS [sum Of TIMOLOGIA_POSO]
FROM   (
   (
       (Customers LEFT JOIN GRAMMATIA ON Customers.CustomerID =       GRAMMATIA.CustomerID)
        LEFT JOIN METRHTA ON Customers.CustomerID =  METRHTA.CustomerID) 
        LEFT JOIN TIMOLOGIA ON Customers.CustomerID = TIMOLOGIA.CustomerID) 
        LEFT JOIN EPITAGES ON Customers.CustomerID = EPITAGES.CustomerID
GROUP BY Customers.CustomerID, Customers.CompanyName;

 

αποτέλεσμα:

>
id name .....  |Σ.επιταγες|  Σ.γραμμ  |Σ.μετρητα | Σ.τιμολογια
1  Ααααα      |1000        |               |       50    |          600
2  Ββββββ     |  10         |    500      |      100   |               
.
.

 

 

για το σύνολο.. των συνολων για καθε πελατη, βαλε παλι σε δράση την NZ(x,0)

 

>
SELECT 
Customers.CustomerID, 
Customers.CompanyName, 
      NZ( Sum(EPITAGES.POSO) , 0)+
      NZ( Sum(GRAMMATIA.POSO) ,   0)+
      NZ( Sum(METRHTA.POSO) ,   0)+
      NZ( Sum(TIMOLOGIA.POSO) ,   0)
AS [TOTAL OF ALL SUMS]
FROM .... κλπ,κλπ

 

αποτέλεσμα:

>
id name .....  |  Sum of All Fears
1  Ααααα      |      1650 
2  Ββββββ     |        610
.
.

 

για ειμαστε και σωστοι και λογιστικά, μαλλον θα βαλεις αρνητικό πρόσημο στις πιστώσεις, και θετικο στις χρεώσεις (ή αντίστροφα), για να μην σας πάνε και μέσα :) :) :) :)

εγω έδειξα το προγραμματιστικό της database. για τα υπόλοιπα στο.... λογιστες.gr

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...