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
(което между другото бих предпочел, дори ако RDBMS всъщност предлага INTERSECT
естествено).