Mam tabelę zawierającą przykładowe pola (generalnie jest to zrzut z innej bazy, dlatego proszę nie patrzeć na to, że jest nieoptymalna):
Kod
sprzedawca | id_klient | sprzedaz
i dane w niej wyglądają tak, że klienci mogą być wyłącznościowi (tzn. jeden klient - jeden sprzedawca - jeden rekord w tabeli) lub współdzieleni (wtedy dla jednego klienta jest tyle rekordów ilu sprzedawców go obsługuje).
Potrzebuję wyciągnąć 2 rodzaje danych:
- klienci wyłącznościowi konkretnego sprzedawcy
- klienci pozostali konkretnego sprzedawcy
Generalnie poradziłem sobie na około, tzn. dla pierwszego przypadku zrobiłem grupowanie po kliencie, wziąłem tylko wystąpienia, gdzie count(id_klient) = 1 i gdzie sprzedawca jest ten, którego potrzebuję:
SELECT klient FROM tabela GROUP BY id_klt_prod HAVING count(id_klt_prod)=1
dla drugiego problemu zrobiłem złączenie z tym zapytaniem, czyli:
SELECT p1.* FROM tabela p1 LEFT JOIN klienci_wylaczni p2 ON p1.klient = p2.klient WHERE p2.klient IS NULL
gdzie klienci_wylaczni to wynik pierwszej kwerendy.
Jednak zasadniczo nie podoba mi się taka konstrukcja, czy ktoś ma ładniejszy pomysł na takie coś? Najlepiej, żeby nie robić już pośrednich kwerend..
Jeszcze do pierwszego problemu - chciałem dla klientów wyłączonych pokazać od razu przyporządkowanego sprzedawcę, jednak nie mogę zrobić tego bez grupowania po tym polu - czy jedyne wyjście to JOIN?
pozdrawiam i liczę na pomoc
Adam