MySQL, जिसका आप उपयोग कर रहे हैं, INTERSECT
. का समर्थन नहीं करता है वाक्य - विन्यास। आपको इसे दूसरे तरीके से हल करना होगा।
इस मामले में, यह मामूली है - हमें केवल उन सभी आपूर्तिकर्ताओं की एक सूची की आवश्यकता है जो कुछ हिस्से के "हरे" और "लाल" की पेशकश करते हैं- आपकी क्वेरी यह देखने के लिए परेशान नहीं करती है कि भागों स्वयं संबंधित हैं या नहीं, इसलिए हम इसे आसानी से हल कर सकते हैं इस तरह:
SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color IN ('red', 'green')
GROUP BY Suppliers.sid
HAVING COUNT(DISTINCT Parts.color) = 2
व्यक्तिगत रूप से, मुझे विश्वास नहीं है कि मूल क्वेरी एक विशिष्ट INTERSECT
है समस्या। JOIN
. पर एक नज़र डालें INTERSECT
. का अनुकरण करने के लिए एक सामान्य समाधान के लिए Vinko Vrsalovic द्वारा प्रस्तावित समाधान (जिसे मैं बीटीडब्ल्यू पसंद करूंगा, भले ही आरडीबीएमएस वास्तव में INTERSECT
. की पेशकश करे मूल रूप से)।