使用しているように見える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
を提供する場合でも、私はこれを好みます ネイティブ)。