使用しているように見える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をエミュレートするための一般的なソリューションとしてVinkoVrsalovicが提供するソリューション (RDBMSが実際にINTERSECTを提供する場合でも、私はこれを好みます ネイティブ)。