Databases Reference
In-Depth Information
INSERT INTO bestellung (bestell_nr, kunden_nr)
VALUES ( 176,
(SELECT kunden_nr FROM kunde
WHERE NAME LIKE 'St%')
);
-- Diese Unterabfrage in der CHECK-Klausel
-- könnte Teil einer CREATE TABLE-Anweisung sein
...
CHECK(stockwerk BETWEEN 0 AND
(SELECT MAX(stockwerk) FROM haus))
Als Erweiterung dieses Konzeptes erlaubt SQL auch Unterabfragen, die mehr als
eine Spalte enthalten. Diese Tupel können dann u. a. mit Tupeln verglichen wer-
den. Ein Beispiel:
SELECT kunden_nr, name, plz, ort
FROM kunde
WHERE (plz,ort) =
(SELECT plz,ort
FROM kunde
WHERE name = 'Stein, Peter')
Aufgabe 5.37
Ermitteln Sie den billigsten Artikel.
Aufgabe 5.38
Welcher Kunde hat die letzte Bestellung aufgegeben? Zeigen Sie die Attribute
kunden_nr , name und bestell_nr an.
Hinweis: Zur Lösung benötigen Sie in der Hauptabfrage einen geeigneten Ver-
bund von kunde und bestellung .
5.4.2 Unterabfragen, die eine Relation liefern
Liefert die Unterabfrage eine Ergebnistabelle mit mehr als einer Zeile, so ist der
Einsatz von Mengenoperatoren in der WHERE-Klausel der Hauptabfrage erfor-
derlich. Folgende Operatoren werden zur Formulierung von Bedingungen ange-
boten, wobei
θ
für einen der Vergleichsoperatoren (=, <>, >, >=, <=, <) steht:
IN
prüft, ob ein Wert in der Ergebnismenge der Unterabfrage enthalten ist.
EXISTS
prüft, ob die Unterabfrage mindestens eine Zeile erbringt, die der Bedingung
genügt.
Tabelle 5.2: Operatoren für Mengenvergleiche
 
Search WWH ::




Custom Search