Det finns två ganska enkla alternativ.
Du kan gå med två gånger med försäljningsbordet, en gång per vara. Om du hoppar över DISTINCT
, kan du få dubbletter av värden om butiken säljer mer än en hammare eller termometer.
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';
...eller så kan du hitta alla tändstickor med hammare eller termometer och räkna hur många distinkta värden det finns. Om det finns två möjliga värden och du får båda är du klar.
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;
En SQLfiddle för att testa båda .