Złączenie selectów

0

Witam,
mam dość chyba prosty problem. Potrzebuję zrobić sumę dwóch selectów (ilość po idTowaru).

select idTowaru, sum(ilość) from PozycjeWNT
where idDokumentu in (select idDokumentu from DokumentyWNT where typDokumentu =8)
group by idTowaru
union
select idTowaru, sum(ilość) from PozycjeZK
where idDokumentu in (select idDokumentu from DokumentyZakupu where typDokumentu =4)
group by idTowaru

Próbowałem użyć klauzuli UNION ale ona nie zwraca mi sumy po idTowaru.
Czy mógłby mi ktoś pomóc?

0

Na moje oko to powinieneś najpierw przerobić tą bazę danych na normalną, bo to co tu masz woła o pomstę do nieba. Gdybyś jak normalny człowiek nie trzymał danych w N identycznych tabelach to nie byłoby problemu...
Musisz tutaj pokombinować jak zroić joina tych wszystkich rekordów...

0
SELECT idTowaru, sum(ilość) FROM (select idTowaru, sum(ilość) from PozycjeWNT
where idDokumentu in (select idDokumentu from DokumentyWNT where typDokumentu =8)
union
select idTowaru, sum(ilość) from PozycjeZK
where idDokumentu in (select idDokumentu from DokumentyZakupu where typDokumentu =4))
GROUP BY idTowaru;
0

To nie są identyczne tabele. Poza tymi dwoma polami występuje kilka zupełnie innych pól. Np. PozycjeZK mają Vat, Pozycje WNT nie, PozycjeWNT mają kurs, walutę, PozycjeZK nie. Różnic jest sporo dlatego zdecydowałem się na trzymanie tych danych w innych tabelach. Może nie jest to idealne rozwiązanie ale wówczas nie widziałem innej możliwości. Przebudowanie tabel łączyłoby się z kompletną przebudową działającego programu.
Myślę, że prościej byłoby zrobienie powyższego zapytania.

0
AdamPL napisał(a):
SELECT idTowaru, sum(ilość) FROM (select idTowaru, sum(ilość) from PozycjeWNT
where idDokumentu in (select idDokumentu from DokumentyWNT where typDokumentu =8)
union
select idTowaru, sum(ilość) from PozycjeZK
where idDokumentu in (select idDokumentu from DokumentyZakupu where typDokumentu =4))
GROUP BY idTowaru;

Dzięki Adam, tylko coś chyba jeszcze nie tak w składni, kombinuję na różne sposoby i nie wychodzi to zapytanie, błędy w składni.

0

Rzeczywiście zapisałem z błędem. Błąd można rozwiązać na dwa sposoby:

  1. Usunąć sum z podzapytania.
  2. Dodać GROUP BY w podzapytaniu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1