Je suis pleinement conscient que la division d'ensemble peut être accomplie par une série d'autres opérations, donc ma question est:Existe-t-il une division en SQL?
Existe-t-il une commande pour définir la division en SQL?
Je suis pleinement conscient que la division d'ensemble peut être accomplie par une série d'autres opérations, donc ma question est:Existe-t-il une division en SQL?
Existe-t-il une commande pour définir la division en SQL?
http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf
De Page 32:
Division Relational n'est pas un opérateur de base. Il peut être exprimé en termes de projection, de produit cartésien et de différence de réglage.
Donc, non. :)
question connexe: Database Design for Tagging
Et une partie pertinente de réponse est this article
Donc en bref, non, il n'y a pas de division de jeu dans SQL.
Here is a nice explanation using relational algebra syntax.
Compte tenu des tables sailors
, boats
et reserves
(exemples de Ramakrishnan & de Gehrke « Database Management Systems »), vous pouvez calculer les marins qui 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)
);
J'ai audité la classe Intro de Gehrke et je peux confirmer que tous les exemples étaient nautiques :) –
Pouvez-vous préciser ce que vous entendez par définir la division? Voulez-vous dire des choses comme l'intersection? –
En outre, parlez-vous de SQL ANSI, ou l'implémentation d'un fournisseur particulier de SQL? –