Es allí división en SQL?
-
02-07-2019 - |
Pregunta
Soy plenamente consciente de que el conjunto de la división puede realizarse 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?
Solución
http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf
A Partir De La Página 32:
Relacional División no es fundamental operador.Puede ser expresado en términos de proyección, producto Cartesiano, y diferencia de conjuntos.
Así que, no.:)
Otros consejos
Relacionadas con la pregunta: Diseño de base de datos para el Etiquetado de
Y la parte pertinente de la respuesta es este artículo
Así que, en resumen, no, no hay una división en SQL.
Aquí hay una buena explicación utilizando álgebra relacional sintaxis.
Tablas sailors
, boats
y reserves
(ejemplos de Ramakrishnan & Gehrke "Base de datos de los Sistemas de Gestión"), se puede calcular los marineros que tienen reservados 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)
);