C'est ma requête:SQL: Erreur de syntaxe avec Intersection?
-- Sids of suppliers who supply a green part AND a red part
(SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color = "red")
INTERSECT
(SELECT Suppliers.sid
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Parts.color = "green");
Ceci est l'erreur:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "INTERSECT (SELECT Suppliers.sid FROM Suppliers JOIN Catalog ON Catalog.sid = Sup" on line 6.
Qu'est-ce que je fais mal?
C'est le schéma:
Fournisseurs (sid: entiers, sname: string, chaîne d'adresse)
Pièces (pid: entiers, pname: string, couleur: string)
Catalogue (sid: entier, pid: entier, coût: réel)
gras = clé primaire
Il serait intéressant de voir ce qui est le plus rapide, cette requête ou ma requête - je pense qu'il s'agit de savoir qui est le plus rapide, une deuxième jointure ou un groupe par opération. – Hogan
@Hogan, * hausser les épaules *. Cela dépend de tant de choses: les index, le moteur, le nombre de lignes, le nombre de mémoires. enless list ... si la question avait été de trouver la solution la plus rapide, j'aurais adopté une approche totalement différente pour y répondre. Pour l'instant, je suis dans le mode de: comment réécrire le SQL standard pour obtenir un résultat équivalent au cas où MySQL n'arriverait pas à supporter la syntaxe. –
point pris, je suppose que je suis toujours dans le mode de ce qui est le plus rapide, pas ce qui est le plus clair. – Hogan