Witam.
Potrzebuje nakierowania jak zrobić zapytanie do bazy danych, aby wynik był jeden, porównawczy. Chodzi o listę pozycji na dokumencie. Przykład:
Dokument WZ/2/2018/2
- Towar1 | Ilość: 5
- Towar2 | Ilość: 10
- Towar3 | Ilość: 8
Został on wygenerowany na podstawie dwóch dokumentów
RO/1/2018/2
- Towar1 | Ilość: 5
- Towar2 | Ilość: 15
RO/2/2018/2
- Towar3 | Ilość: 10
Oczywiście mogę zrobić 3 różne zapytania i całe porównanie robić po stronie programu, ale wolałbym mieć odpowiedź już pod stronie bazy danych, ponieważ pozycje na dokumencie WZ decydują o tym jaką informację mam wysłać klientowi. Próbowałem sobie poradzić z pomocą EXCEPT
i INTERSECT
select TrE_TwrKod, TrE_TwrEAN, TrE_Ilosc from CDN.Traelem
where TrE_TrNId in (249554, 249555) --DOKUMENTY RO
except
select TrE_TwrKod, TrE_TwrEAN, TrE_Ilosc from CDN.Traelem
where TrE_TrNId in (249563) --DOKUMENT WZ
select TrE_TwrKod, TrE_TwrEAN, TrE_Ilosc from CDN.Traelem
where TrE_TrNId in (249554, 249555) --DOKUMENTY RO
intersect
select TrE_TwrKod, TrE_TwrEAN, TrE_Ilosc from CDN.Traelem
where TrE_TrNId in (249563) --DOKUMENT WZ
Najlepszym wynikiem jaki próbuje uzyskać to:
TrE_Kod | TrE_EAN | TrE_Ilosc(WZ) | TrE_Ilosc(RO)
Jeśli jakieś pozycji na WZ
nie ma, a była na RO
to TrE_Ilosc(WZ)
będzie null albo 0.
PS.
Tak, to Comarch Optima :)