Istnieją dwie dość proste opcje.
Możesz dołączyć do stołu sprzedażowego dwa razy, raz na przedmiot. Jeśli pominiesz DISTINCT
, możesz otrzymać zduplikowane wartości, jeśli sklep sprzedaje więcej niż jeden młotek lub termometr.
SELECT DISTINCT s.shopname
FROM shops s
JOIN sale s1 ON s.shopcode = s1.shopcode AND s1.product='hammer'
JOIN sale s2 ON s.shopcode = s2.shopcode AND s2.product='thermometer';
...albo możesz znaleźć wszystkie dopasowania za pomocą młotka lub termometru i policzyć, ile jest różnych wartości. Jeśli istnieją dwie możliwe wartości i otrzymasz obie, wszystko jest ustawione.
SELECT s.shopname
FROM shops s
JOIN sale s1 ON s.shopcode = s1.shopcode
WHERE s1.product IN('hammer','thermometer')
GROUP BY s.shopname
HAVING COUNT(DISTINCT s1.product)=2;