Er zijn twee redelijk eenvoudige opties.
Je kunt twee keer meedoen aan de sale tafel, één keer per item. Als u de DISTINCT
. overslaat , kunt u dubbele waarden krijgen als de winkel meer dan één hamer of thermometer verkoopt.
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';
...of je kunt alle overeenkomsten vinden met een hamer of thermometer en tellen hoeveel verschillende waarden er zijn. Als er twee mogelijke waarden zijn en je krijgt beide, dan ben je klaar.
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;
Een SQLfiddle om beide te testen .