Witam
mam problem z utworzeniem zapytania łączącego wyniki z trzech tabel. Proszę o jakieś wskazówki.
UMOWA
ID_UMOWA | NR_UMOWY | DATA_ZAW | IMIE_NAZWISKO |
1 | 1 | 2007-01-04 | Kowalski |
2 | 2 | 2007-01-07 | Nowak |
PRZEDMIOT
ID_PRZEDMIOT | ID_UMOWA | NAZWA | PRZYJETYCH_SZT |
1 | 1 | Przedmiot1 | 3 |
2 | 1 | Przedmiot2 | 2 |
3 | 2 | Przedmiot3 | 2 |
SPRZEDAZ
ID_SPRZEDAZ | ID_PRZEDMIOT | LICZBA_SZT |
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 1 |
4 | 2 | 1 |
5 | 3 | 1 |
6 | 3 | 2 |
ZWROT ZAKUPU
ID_ZWROT | ID_SPRZEDAZ | ID_PRZEDMIOT | LICZBA_SZT |
1 | 1 | 1 | 1 |
2 | 2 | 1 | 1 |
3 | 3 | 2 | 1 |
4 | 5 | 3 | 1 |
5 | 6 | 3 | 1 |
6 | 6 | 3 | 1 |
OCZEKIWANY WYNIK ZAPYTANIA
==============
DLA ID_UMOWA=1
NAZWA | PRZYJETYCH | SPRZEDANYCH | ZWROCONYCH | SPRZED_FAKTYCZNIE | DOSTEPNYCH |
Przed1 | 3 | 3 | 2 | 1 | 2 |
Przed2 | 2 | 2 | 1 | 1 | 1 |
==============
DLA ID_UMOWA=2
NAZWA | PRZYJETYCH | SPRZEDANYCH | ZWROCONYCH | SPRZED_FAKTYCZNIE | DOSTEPNYCH |
Przed3 | 2 | 3 | 3 | 0 | 2 |
Utworzyłem zapytanie ale działa poprawnie tylko w pierwszym przypadku.
W drugim sprzedanych pokazuje 5 a nie jak powinno 3.
SELECT
PRZEDMIOT.ID_PRZEDMIOT,
PRZEDMIOT.NAZWA,
PRZEDMIOT.PRZYJETYCH_SZT AS PRZYJETYCH,
SUM(SPRZEDAZ.LICZBA_SZT) AS SPRZEDANYCH,
SUM(ZWROT_Z.LICZBA_SZT) AS ZWROCONYCH
FROM
PRZEDMIOT
INNER JOIN SPRZEDAZ ON (PRZEDMIOT.ID_PRZEDMIOT = SPRZEDAZ.ID_PRZEDMIOT)
LEFT OUTER JOIN ZWROT_Z ON (SPRZEDAZ.ID_PRZEDMIOT = ZWROT_Z.ID_PRZEDMIOT)
AND (SPRZEDAZ.ID_SPRZEDAZ = ZWROT_Z.ID_SPRZEDAZ)
WHERE
(PRZEDMIOT.ID_UMOWA = 1)
GROUP BY
PRZEDMIOT.ID_PRZEDMIOT,
PRZEDMIOT.NAZWA,
PRZEDMIOT.PRZYJETYCH_SZT
`</code>`