sto se tice "ne odgovara da ide u 2 upita" .. ako ih zaokruzis transakcijom, nemas problem ...
sto se tice toga kako ti je dizajnirana baza - ne valja, pogledaj malo
http://mysql.crsndoo.com/wp/tag/normalizacija/
sto se tice upita .. ima da bude sporoooooooooooooooooooo a i pitanje dal moze uopste
Code:
SELECT (u.sifra) ulica,
(Trim(u.naziv)) ulica_naz,
(gr.sifra) grupa,
(gr.naziv) grupa_naz,
If(n.datd >= '2009-04-01'
AND n.datd <= '2009-04-30',Sum(n.potraz),
NULL) potraz,
If(n.datd = '2009-03-31',Sum(n.duguje),NULL) duguje
FROM nalvoda AS n
LEFT OUTER JOIN ulica AS u
ON n.ulicaid = u.id
LEFT OUTER JOIN grupa_vod AS gr
ON If(n.kategorija = 8,u.grupa = gr.sifra,u.grupa1 = gr.sifra)
WHERE ((n.datd >= '2009-04-01'
AND n.datd <= '2009-04-30')
OR (n.datd = '2009-03-31'))
AND n.kategorija = 8
AND gr.sifra = 36
GROUP BY u.sifra;
da u ifu nisu agregatne funkcije radilo bi ... ali nisam nesto siguran kako ce da radi sa agregatnim funkcijama, morao bi da probas ... ako ne radi, onda moze da se napravi varijabla koju ce da tokom upita racuna .. ali i to je turbo sporo .. sve u svemu, tesko ces ovo da izvuces tako kako si zamislio
maaaaaalo brza varijanta bi bilo ... (uh koliko bi ovo bilo lakse da sam spavao bar 20min u zadnjih 48h :( )
Code:
SELECT t1.ulica, t1.ulica_naz, t1.grupa_naz, t1.duguje, t2.potraz from
(
SELECT (u.sifra) ulica,
(Trim(u.naziv)) ulica_naz,
(gr.sifra) grupa,
(gr.naziv) grupa_naz,
Sum(n.duguje) duguje
FROM nalvoda AS n
LEFT OUTER JOIN ulica AS u
ON n.ulicaid = u.id
LEFT OUTER JOIN grupa_vod AS gr
ON If(n.kategorija = 8,u.grupa = gr.sifra,u.grupa1 = gr.sifra)
WHERE n.datd = '2009-03-31'
AND n.kategorija = 8
AND gr.sifra = 36
GROUP BY u.sifra
) t1,
(
SELECT (u.sifra) ulica,
(Trim(u.naziv)) ulica_naz,
(gr.sifra) grupa,
(gr.naziv) grupa_naz,
Sum(n.potraz) potraz
FROM nalvoda AS n
LEFT OUTER JOIN ulica AS u
ON n.ulicaid = u.id
LEFT OUTER JOIN grupa_vod AS gr
ON If(n.kategorija = 8,u.grupa = gr.sifra,u.grupa1 = gr.sifra)
WHERE n.datd >= '2009-04-01'
AND n.datd <= '2009-04-30'
AND n.kategorija = 8
AND gr.sifra = 36
GROUP BY u.sifra
) t2
WHERE
t1.ulica = t2.ulica AND
t1. ulica_naz = t2.ulica_naz AND
t1.grupa_naz = t2.grupa_naz
samo sto ovde ova tri uslova iza where nisu bas 1/1 ... tu bi trebao neki primary key da se gadja e ne sira ulice ... no opet, ako je sifra ulice unique onda je to ok ... i onda samo to treba da ostane, ne treba sva 3 uslova da se gadjaju bez razloga ako je jedan dovoljan
javi pa probaj