Eine Unterabfrage auch SUBQUERY genannt fragt benötigte Informationen durch eine eigene Abfrage ab. Eine SUBQUERY ist immer Teil eines übergeordneten SELECT Befehls. Die allgemeine SQL-Syntax lautet:
SELECT column_name FROM table WHERE column_name OPERATOR (SELECT column_name FROM table);
Beachte:
- die Unterabfrage muss in runden Klammer gesetzt werden
- liefert die SUBQUERY einen einzelnen Datensatz, verwendet man Vergleichsoperatoren
- liefert die SUBQUERY mehrere Datensätze, verwendet man Mengenoperatoren
Zum besseren Verständnis stellen wir die Unterabfrage schrittweise zusammen:
Die Abfrage
SELECT MAX(LENGTH) FROM film;
liefert als Ergebnis z.b. den Wert 185:
Da man nun diesen Wert kennt, kann man gezielt die zugehörige Datensätzen abfragen:
SELECT title, length FROM film WHERE length = 185;
Diese beiden Abfragen kann man jetzt mit Hilfe einer SUBQUERY in einen Befehl zusammenfassen:
SELECT title, length FROM film WHERE LENGTH = (SELECT MAX(LENGTH) FROM film);
Da die Unterabfrage nur einen Wert ausgibt, können wir den Vergleichsoperator „=“ nutzen.