[ favory @ 23.06.2010. 11:50 ] @
Imam tri tabele:
fakture
-----------
faktura_Id

stavke
------------------
Faktura_Id Iznos

uplate
---------------------
Faktura_Id IznUplate

Tabela koju zelim da dobijem:

izvestaj
-------------------------------------------
faktura_Id IznosFakture UkupneUplate


Upit:

SELECT Fakture.Faktura_Id,;
SUM(Stavke.Iznos) AS IznosFakture,;
SUM(Uplate.IznUplate) AS UkupneUplate;
FROM Fakture LEFT JOIN Stavke ON Fakture.Faktura_Id=Stavke.Faktura_Id;
LEFT JOIN Uplate ON Fakture.Faktura_Id=Uplate .Faktura_Id;
GROUP BY Fakture .Faktura_Id


Suma uplata po fakturi nije ok! Uvecana je onoliko puta koliko ima stavki u tabeli STAVKE za jednu fakturu!
Očito upit nije u redu!?
[ sparc @ 23.06.2010. 12:14 ] @
Ocigledno,
napravio si dekartov proizvod skupova,
prvim joinom dobio si onoliko redova koliko imas satvki faktura,
a onda si drugim joinom multiplicirao sa svaki red stavki redove uplata.

Probaj:
SELECT Fakture.Faktura_Id,
SUM(Stavke.Iznos) AS IznosFakture,
(SELECT SUM(Uplate.IznUplate) FROM uplate WHERE Fakture.Faktura_id = Uplate.Faktura_ID) AS UkupneUplate
FROM Fakture LEFT JOIN Stavke ON Fakture.Faktura_Id=Stavke.Faktura_Id
GROUP BY Fakture .Faktura_Id

ili
SELECT Fakture.Faktura_Id,
(SELECT SUM(Stavke.Iznos) FROM Stavke WHERE fakture.Faktura_id = Stavke.Faktura_id) AS IznosFakture,
(SELECT SUM(Uplate.IznUplate) FROM uplate WHERE Fakture.Faktura_id = Uplate.Faktura_ID) AS UkupneUplate
FROM Fakture
[ favory @ 23.06.2010. 13:56 ] @
Radi!

Pozdrav..