MySQL, yang tampaknya Anda gunakan, tidak mendukung INTERSECT
sintaksis. Anda harus menyelesaikannya dengan cara lain.
Dalam hal ini, ini sepele -kami hanya memerlukan daftar semua pemasok yang menawarkan "hijau" dan "merah" dari beberapa bagian- permintaan Anda tidak mengganggu untuk melihat apakah bagian itu sendiri terkait, jadi kami dapat menyelesaikannya dengan cukup mudah seperti ini:
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
Secara pribadi, saya tidak percaya kueri asli adalah tipikal INTERSECT
masalah. Lihat JOIN
solusi yang ditawarkan oleh Vinko Vrsalovic untuk solusi umum untuk meniru INTERSECT
(yang saya lebih suka bahkan jika RDBMS sebenarnya menawarkan INTERSECT
asli).