obtener - sql module function
¿Hay una división establecida en SQL? (3)
http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf
De la página 32:
La división relacional no es un operador fundamental. Se puede expresar en términos de proyección, producto cartesiano y establecer la diferencia.
Entonces, no. :)
Soy plenamente consciente de que la división de conjuntos puede lograrse a través de una serie de otras operaciones, por lo que mi pregunta es:
¿Hay un comando para establecer la división en SQL?
Aquí hay una buena explicación usando la sintaxis de álgebra relacional .
Dadas las tablas de sailors
, boats
y reserves
(ejemplos de los "Sistemas de gestión de bases de datos" de Ramakrishnan y Gehrke) puede calcular marineros que han reservado todos los barcos con la siguiente consulta:
SELECT name FROM sailors
WHERE Sid NOT IN (
-- A sailor is disqualified if by attaching a boat,
-- we obtain a tuple <sailor, boat> that is not in reserves
SELECT s.Sid
FROM sailors s, boats b
WHERE (s.Sid, b.Bid) NOT IN (
SELECT Sid, Bid FROM reserves
)
);
-- Alternatively:
SELECT name FROM sailors s
WHERE NOT EXISTS (
-- Not reserved boats
(SELECT bid FROM boats)
EXCEPT
(SELECT r.bid FROM reserves r
WHERE r.sid = s.sid)
);
Pregunta relacionada: Diseño de base de datos para etiquetado
Y la parte relevante de la respuesta es este artículo
En resumen, no, no hay una división establecida en SQL.