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