Existují dvě poměrně přímé možnosti.
S prodejní tabulkou se můžete připojit dvakrát, jednou na položku. Pokud přeskočíte DISTINCT
, můžete získat duplicitní hodnoty, pokud obchod prodává více než jedno kladivo nebo teploměr.
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';
...nebo můžete najít všechny zápalky s kladivem nebo teploměrem a spočítat, kolik různých hodnot existuje. Pokud existují dvě možné hodnoty a dostanete obě, jste připraveni.
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;
SQLfiddle pro testování obou .