[ 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
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.