Der er to ret ligetil muligheder.
Du kan deltage to gange med salgsbordet, én gang pr. Hvis du springer DISTINCT
over , kan du få duplikerede værdier, hvis butikken sælger mere end én hammer 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 du kan finde alle tændstikker med hammer eller termometer og tælle hvor mange forskellige værdier der er. Hvis der er to mulige værdier, og du får begge, er 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 til at teste begge dele .