[ zolakt @ 23.01.2008. 19:37 ] @
Evo ovako, imam jedan problem oko NULL vrijednosti.

Imam 2 tablice: stavka i racun
stavka ima stupce: stavka_id, odobreno
racun ima stupce: racun_id, stavka_id, iznos

e sad zelim napraviti upit koji zbraja sve racune u svakoj stavci i kao izlaz daje 3 stupca:
ukupno (iz tablice stavka), potroseno (suma iznosa racuna grupirano po stavkama), ostaje(ukupno-potroseno)

isto tako sve stavke moraju biti vidljive bez obzira da li ima ijedan racun koji im pripada, pa sam spajao sa LEFT JOIN naredbom

ovako izgleda SQL naredba
SELECT ukupno ,SUM(iznos) AS potroseno, odobreno - SUM(iznos) AS ostaje FROM stavka LEFT JOIN racun
ON racun.stavka_id = stavka.stavka_id GROUP BY stavka.stavka_id

problem je u tome sto u stavkama u kojima nema niti jedan racun stupac potroseno je NULL, jer nije jedna vrijednost nije zbrojena
i onda kod izracunavanja stupca "ostaje" opet je vrijednost NULL, jer "nesto" - NULL = NULL

pa imam situaciju da mi recimo izbacuje
ukupno = 100 potroseno = 0 ostaje = 0

jel ima netko mozda kakav prijedlog kako ovo rijesiti?

[Ovu poruku je menjao zolakt dana 23.01.2008. u 20:54 GMT+1]
[ zolakt @ 23.01.2008. 21:33 ] @
nije bitno
zaobisao sam problem s php-om
sad sve funkcionira
[ stsung @ 24.01.2008. 04:51 ] @
Pozd.

Bez da ulazim dublje u problematiku, trebao bi da izbegnesh NULL vrednosti pri rachunanju, npr. umesto SUM(iznos) stavish SUM(IFNULL(iznos,0)).

Svako dobro.
[ zolakt @ 28.01.2008. 23:10 ] @
zanimljivo
nisam znao da postoji IFNULL naredba

nego da ne otvaram novu temu, trebam jos jedan savjet
ovo mi nije nesto prebitno, ali bilo bi zgodno da radi

upiti se mogu filtirati po vremenu
ali mi se dogadaja jako cudna stvar

ako nema vremenskog filtriranja sve radi ok

ali s vremenskim filtriranjem, odnosno na upit u WHERE dijelu samo dodano AND datum>='$datum_od' AND datum <='$datum_do'
LEFT JOIN kao da nema utjecaja

ako u nekoj stavci nema racunu, on ju u izlazu ne pokaze

nije mi jasno u cemu je problem
upit je identican ovome bez filtriranja, osim ova dva uvjeta dodana na kraju
[ stsung @ 29.01.2008. 00:13 ] @
Pozd.

WHERE uslov je filtrirajuci, znachi rezultati koji ne zadovoljavaju where uslov nece biti vraceni. Ili promeni WHERE uslov da pazi na NULL vrednosti, ili podigni taj uslov u JOIN. Nisi naveo u prvoj poruci da neka od ove dve tabele ima takvo polje - pretpostavljam da se nalazi u tabeli rachun.

Svako dobro.
[ zolakt @ 29.01.2008. 11:12 ] @
Hvala puno

digao sam ove datume u JOIN i radi sve kako spada
svaka cast

Pozdrav