Има две доста прави опции.
Можете да се присъедините два пъти към таблицата за разпродажба, веднъж на артикул. Ако пропуснете DISTINCT
, може да получите дублиращи се стойности, ако магазинът продава повече от един чук или термометър.
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';
...или можете да намерите всички съвпадения с чук или термометър и да преброите колко различни стойности има. Ако има две възможни стойности и получавате и двете, сте готови.
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 за тестване и на двете .