• 2 odgovora
  • 3.631 pregleda
Sql upit spajanje tri tabele 23.06.2010. u 11:50 · pre 198 meseci #1
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!?
Re: Sql upit spajanje tri tabele 23.06.2010. u 12:14 · pre 198 meseci #2
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
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme