Ada dua opsi yang cukup mudah.
Anda dapat bergabung dua kali dengan tabel penjualan, sekali per item. Jika Anda melewatkan DISTINCT
, Anda mungkin mendapatkan nilai duplikat jika toko menjual lebih dari satu palu atau 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';
...atau Anda dapat menemukan semua korek api dengan palu atau termometer dan menghitung berapa banyak nilai berbeda yang ada. Jika ada dua kemungkinan nilai dan Anda mendapatkan keduanya, Anda sudah siap.
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;
Sebuah SQLfiddle untuk menguji keduanya .