Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :erreur de syntaxe avec intersection ?

MySQL, que vous semblez utiliser, ne prend pas en charge le INTERSECT syntaxe. Vous allez devoir le résoudre d'une autre manière.

Dans ce cas, c'est trivial - nous avons seulement besoin d'une liste de tous les fournisseurs qui proposent du "vert" et du "rouge" de certaines pièces - votre requête ne se soucie pas de voir si les pièces elles-mêmes sont liées, nous pouvons donc la résoudre assez facilement comme ceci :

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

Personnellement, je ne crois pas que la requête d'origine soit un INTERSECT typique problème. Jetez un œil au JOIN solution proposée par Vinko Vrsalovic pour une solution générale pour émuler le INTERSECT (ce que je préférerais même si le RDBMS offrirait en fait INTERSECT nativement).