Zurück

Geschachtelte SQL- Anfragen mit Vergleichsoperatoren

Vor
Teilanfragen (Subqueries) mit einem ErgebnisÜbungen

Teilanfragen (Subqueries) mit einem Ergebnis

In der WHERE- Klausel kann sich eine Bedingung auch auf eine untergeordnete SELECT- Anfrage beziehen.

In vielen Fällen liefert die untergeordnete Anfrage genau ein Ergebnis zurück.

Gesucht ist der Klassenleiter der fünften Klasse.

SQL - AnfrageErgebnis - Tabelle
SELECT Name
FROM Lehrkraft
WHERE PersNr = (
SELECT Klassenleitung
FROM Klasse
WHERE Name = 5
) ;

Übungsdatenbank

Bemerkung
  • Die Domäne (Definitionsmenge) des Attributs Klasse.Name ist INTEGER, weshalb keine Hochkommata - die bei Zeichenketten benötigt werden - verwendet werden.
  • Anfragen, die mittels einer Unteranfrage gelöst werden, können in der Regel auch mittels eines Joins berechnet werden und umgekehrt.

Zur Ermittlung der Ergebnistabellen wird dazu im ersten Schritt die untergeordnete Anfrage

SELECT Klassenleitung
FROM Klasse
WHERE Name = 5 ;

ausgewertet. Die Zwischenergebnistabelle enthält den Wert der Spalte Klassenleitung im Datensatz der Klasse 5, also die Personalnummer 245. Mit diesem Zwischenergebnis wird die übergeordnete Query beantwortet, die dann der Anfrage

SELECT Name
FROM Lehrkraft
WHERE PersNr = 15 ;

entspricht. Diese Anfrage funktioniert aufgrund der Verwendung des Gleichheitszeichens nur dann, wenn die Ergebnistabelle der untergeordneten Anfrage genau einen Wert liefert.

Zur Ermittlung der Ergebnistabellen wird dazu im ersten Schritt die untergeordnete Anfrage

SELECT PersNr
FROM Professor
WHERE Name = 'Zuse' ;

ausgewertet. Die Zwischenergebnistabelle enthält den Wert der Spalte PersNr im Datensatz des Professors Zuse, also die Personalnummer 36. Mit diesem Zwischenergebnis wird die übergeordnete Query beantwortet, die dann der Anfrage

SELECT RaumNr
FROM Dienstzimmer
WHERE PersNr = 36 ;

entspricht. Diese Anfrage funktioniert aufgrund der Verwendung des Gleichheitszeichens nur dann, wenn die Ergebnistabelle der untergeordneten Anfrage genau einen Wert liefert.

Als Vergleichsoperatoren können neben dem Gleichheitszeichen auch , ;, und verwendet werden. Voraussetzung ist aber immer, dass die Unteranfrage nur einen Wert zurückliefert!

Welche Lehrkraft ist Fachbetreuer in Sport?

Welche Lehrkräfte sind älter als der Durchschnitt des Kollegiums?