Domanda

Sono pienamente consapevole che la divisione set può essere realizzata attraverso una serie di altre operazioni, quindi la mia domanda è:

Esiste un comando per impostare la divisione in SQL?

È stato utile?

Soluzione

http://vadimtropashko.files.wordpress.com/2007/02/ ch3.pdf

Da pagina 32:

  

La divisione relazionale non è un operatore fondamentale. Può essere espresso in termini di proiezione, prodotto cartesiano e stabilire la differenza.

Quindi no. :)

Altri suggerimenti

Domanda correlata: Progettazione di database per l'etichettatura

E la parte rilevante della risposta è questo articolo

Quindi in breve, no, non esiste una divisione set in SQL.

Ecco una bella spiegazione usando la sintassi dell'algebra relazionale .

Date le tabelle marinai , barche e riserve (esempi da Ramakrishnan & amp; Gehrke's " Database Management Systems ") puoi calcolare i marinai che hanno prenotato tutte le barche con la seguente query:

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)
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top