kurt
28.01.2008, 20:47:59
mam trzy tabele:
A: zawiera kolumnę cat_id, wypełnioną wartościami 1,2,3,4,5...
B (słownikowa): zawiera kolumny: it_typu oraz prod_id
C: (słownikowa): zawiera kolumny:cat_id oraz prod_id
Chcę wyłuskać z tabeli A wszystkie wartości cat_id , które nie są reprezentowane w tabeli C.
Dla utrudnienia wyszukanie musi spełniać warunek dla konkretnej wartości id_typu z tabeli B.
Próbowałem już kilku zapytań z zastosowaniem LEFT JOIN, ale niestety zabrnąłem w ślepą uliczkę i nie przychodzi mi nic sensownego do głowy.
arecki
28.01.2008, 21:01:21
Chyba tak ale nie gwarantuje

SELECT A.cat_id FROM tabelaA A WHERE cat_id NOT IN (
SELECT C.cat_id FROM tabelaB B LEFT JOIN tabelaC C ON B.prod_id = C.prod_id WHERE B.prod_id = 'wybrana wartosc'
)
kurt
28.01.2008, 21:14:18
Jak ktoś kiedyś będzie mnie pytał, to podam Twoją kandydaturę do Nobla

lekkie poprawki i zadziałało :
SELECT A.cat_id FROM tabelaA A WHERE cat_id NOT IN ( SELECT C.cat_id FROM tabelaC C LEFT JOIN tabelaB B ON B.prod_id = C.prod_id WHERE B.id_typu = 'wybrana wartosc')
arecki
29.01.2008, 13:00:13
Oj ale mi się lapsus językowy wymsknął. Faktycznie teraz powinno być lepiej. Cieszy mnie to że mogłem pomóc. A z tym noblem to nie taki głupi pomysł... 1000000 $ drogą nie chodzi