Gibt es gesetzt Division in SQL?
-
02-07-2019 - |
Frage
Ich bin voll und ganz bewusst, dass Set Division durch eine Reihe von anderen Operationen durchgeführt werden kann, so meine Frage ist:
Gibt es einen Befehl für Set Division in SQL?
Lösung
http://vadimtropashko.files.wordpress.com/2007/02/ ch3.pdf
Von Seite 32:
Relational Abteilung ist kein grundsätzlicher Betreiber. Es kann in Bezug auf die Projektion, cartesianischen Produkt und setzen Differenz ausgedrückt werden.
Also, nein. :)
Andere Tipps
Verwandte Frage: Datenbank-Design für Tagging
Und relevanter Teil der Antwort ist dieser Artikel
kurz gesagt also, nein, gibt es keine feste Einteilung in SQL.
Hier ist eine schöne Erklärung relationale Algebra-Syntax .
Bei Tabellen sailors
, boats
und reserves
(Beispiele aus Ramakrishnan & Gehrke „Datenbank-Management-Systeme“) Sie können Segler berechnen, die alle Boote mit der folgenden Abfrage reserviert haben:
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)
);