Zurück

Geschachtelte SQL- Anfragen mit speziellen Operatoren

Vor
Teilanfragen mit mehr als einem ErgebnisEine einfache Möglichkeit mit dem IN - OperatorErweiterte MöglichkeitenÜbungen

Teilanfragen mit mehr als einem Ergebnis

In vielen Fällen kann man nicht garantieren, dass in der Unteranfrage nur ein Ergebnis zurückgeliefert wird.

Bemerkung Im Zweifelsfall sollte man auf geschachtelte Anfragen mit , , , und = verzichten!

Für untergeordnete Anfragen, die mehrere Ergebnisse, also eine Ergebnismenge, zurückliefern, stellt SQL spezielle Operatoren zur Verfügung.

Eine einfache Möglichkeit mit dem IN - Operator

Der IN - Operator eignet sich auch zur Auswahl von Datensätzen, wenn das zu vergleichende Attribut aus einer kleinen, diskreten Menge stammt. Die Auswahlmenge wird in Form ihrer Elemente hinter dem IN - Operator angegeben.

Welche Schülerinnen und Schüler - unter Angabe von Name und Klasse - sind katholisch oder evangelisch?

SQL - AnfrageErgebnis - Tabelle
SELECT Name, gehoert_zu AS Klasse
FROM Schueler
WHERE Konfession IN ('rk', 'ev') ;

Übungsdatenbank

Diese Verwendung ersetzt eine (in der Regel längere) Formulierung mit OR- Operatoren.

Erweiterte Möglichkeiten

Die Auswahlmenge kann auch auf Grund einer untergeordneten Query erzeugt werden. Dazu stehen folgende Operatoren zur Verfügung:

Name des Operators
Bedeutung
IN
Test auf Mengenmitgliedschaft
NOT IN
Test, ob ein Element nicht in einer Menge ist.
( = , , ...) ANY
Test, ob es mindestens ein Element in der Unteranfrage gibt, das den Vergleich mit dem Vergleichswert erfüllt.
( =, , ...) ALL
Test, ob alle Elemente in der Unteranfrage den Vergleich mit dem Vergleichswert erfüllen.
EXISTS
Test, ob die von der Unteranfrage bestimmte Menge nicht leer ist.
NOT EXISTS
Test, ob die von der Unteranfrage bestimmte Menge leer ist.
UNIQUE
Test, ob das Ergebnis duplikatfrei ist.

Welche Lehrkräfte haben eine Fachbetreuung?

SQL - AnfrageErgebnis - Tabelle
SELECT Name
FROM Lehrkraft
WHERE PersNr IN (
SELECT Lehrkraft
FROM hat_Fachbetreuung_in
) ;

Übungsdatenbank

Welche Lehrkraft ist am jüngsten?

SQL - AnfrageErgebnis - Tabelle
SELECT Name
FROM Lehrkraft
WHERE Geburtsjahr >= ALL (
SELECT Geburtsjahr
FROM Lehrkraft
) ;

Übungsdatenbank

Welche Lehrerinnen sind 1950, 1952, 1956 oder 1957 geboren?

Welche Lehrkräfte haben die Fachbetreuung in Mathematik?

Welchen Lehrkräften, alphabetisch absteigend sortiert, wurden bereits Klassen zugeteilt?