दो बिल्कुल सीधे आगे के विकल्प हैं।
आप प्रति आइटम एक बार बिक्री तालिका के साथ दो बार शामिल हो सकते हैं। अगर आप 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 ।