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?

Était-ce utile?

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)
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top