Pomoc w zapytaniu z JOIN

0

Witam,

potrzebuje pomocy w napisaniu zapytania dla tabel:

Produkty

ProduktID Nazwa
1 Test 1
2 Test 2
3 Test 3
4 Test 4

ProduktDodatki

ID ProductID DodatekID
1 2 121
2 3 121
3 4 111
4 2 140
4 4 140
4 3 140

dla przykładu potrzebuje wyciągnąć wszystkie ProductID, które posiadają DodatekID 121 i 140 czyli powinienem dostać ProductID: 2 oraz 3

1

A to po co join w ogóle?

select ProductID form tabela where DodatekID in (121, 140) group by ProductID having count(*)=2

Oczywiscie jak chcesz do tego nazwę to musisz sobie to złączyć z tą pierwszą tabelą po ID, ale to raczej trywialne.

0

Dzięki,

a jak bym musiał jako główną tabele używać tą pierwszą, to jestem w stanie jakoś to zrobić, coś w stylu:

SELECT p.ProductID from Produkty p LEFT JOIN ProduktDodatki pd on (p.ProductID = pd.ProduktID) -- i tu mam problem z tym warunkiem z dodatkami
1

Nie bardzo rozumiem. Dalej masz DOKŁADNIE TO SAMO.

SELECT p.ProductID FROM Produkty p LEFT JOIN ProduktDodatki pd ON (p.ProductID = pd.ProduktID)
WHERE pd.DodatekID IN (121, 140) GROUP BY p.ProductID HAVING COUNT(*)=2
0

OK, wszystko działa, to czego mi brakowało w moich wcześniejszych próbach to

HAVING COUNT(*)=x

Wielkie dzięki ;)

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