Existe-t-il une division des ensembles en SQL?
-
02-07-2019 - |
Question
Je suis pleinement conscient du fait que la division des ensembles peut être réalisée via une série d'autres opérations. Ma question est donc la suivante:
Existe-t-il une commande pour définir les divisions en SQL?
La solution
http://vadimtropashko.files.wordpress.com/2007/02/ ch3.pdf
De la page 32:
La division relationnelle n’est pas un opérateur fondamental. Il peut être exprimé en termes de projection, de produit cartésien et de différence de réglage.
Alors non. :)
Autres conseils
Question associée: Conception d'une base de données pour le balisage
La partie pertinente de la réponse est cet article
.En bref, non, il n'y a pas de division d'ensemble en SQL.
Voici une bonne explication à l'aide de la syntaxe de l'algèbre relationnelle .
Tableaux donnés marins
, bateaux
et réserves
(exemples tirés de Ramakrishnan & amp; Gehrke's "Systèmes de gestion de base de données"), vous pouvez calculer les ont réservé tous les bateaux avec la requête suivante:
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)
);