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?

¿Fue útil?

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)
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top