Esta es mi consulta:SQL: ¿Error de sintaxis con intersect?
-- 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");
Este es el error:
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é estoy haciendo mal?
Este es el esquema:
Proveedores (sid: enteros, sname: de cadena, cadena de dirección)
Partes (pid: enteros, pname: cadena, color: String)
Catálogo (sid: entero, PID: número entero, costo: bienes)
= negrita clave primaria
Sería interesante ver cuál es más rápido, esta consulta o mi consulta: creo que todo se reduce a lo que es más rápido, una segunda unión o un grupo por operación. – Hogan
@Hogan, * encogimiento de hombros *. Esto depende de muchas cosas: índices, qué motor, cuántas filas, cuánta memoria. lista inútil ... si la pregunta hubiera sido encontrar la solución más rápida, habría tomado un enfoque completamente diferente para responder a esto. Por ahora, estoy en el modo de: cómo reescribir SQL estándar para obtener un resultado equivalente en caso de que MySQL no soporte la sintaxis. –
punto tomado, supongo que siempre estoy en el modo de lo que es más rápido, no lo que es más claro. – Hogan