Kleines Nachschlagewerk Informatik
Geschachtelte Abfragen
Worum geht es?
SQL-Abfragen können Bedingungen haben. Die Werte, auf die getestet wird, müssen aber evtl. erst noch aus der Datenbank herausgesucht werden.
Struktur
Die Struktur ist wie folgt:

      SELECT Spalte FROM Tabelle
          WHERE Bedingung mit (SELECT Spalte FROM Tabelle WHERE Bedingung)
            
Die geklammerte Abfrage liefert ein Ergebnis, welches für die Bedingung der Hauptabfrage genutzt werden kann.

Möchte man beispielsweise wissen, wer mehr als der Durchschnitt verdient, dann geht folgende Abfrage nicht:

      SELECT Nachname, Vorname FROM Mitarbeiter WHERE Gehalt > avg(Gehalt)
            
Ein "misuse of avg" wird kritisiert. Man muss den Durchschnittslohn also vorher erst ermitteln.

      SELECT Nachname, Vorname FROM Mitarbeiter
          WHERE Gehalt > (SELECT avg(Gehalt) FROM Mitarbeiter)
            
Einschränkungen
Ein Vergleich mit mehreren Daten in der Bedingung der Hauptabfrage ist nicht möglich. Somit kann die Unterabfrage nur einen Wert zurück liefern.
Tipp
Schreibe zuerst die Unterabfrage, prüfe sie und integriere sie erst danach in die Hauptabfrage.