Subquery Tutorial

Subquery

Oft sind in SQL für kompliziertere Aufgabenstellungen Subqueries bzw. Unterabfragen notwendig. Man kann in SQL Abfragen beliebig oft verschachteln. Unterabfragen sind sowohl im SELECT als auch im FROM und im WHERE möglich, im SELECT werden sie allerdings eher selten verwendet. Um zum Beispiel alle Kunden auszugeben, die denselben Nachnamen haben, wie der Kunde mit der ID 612, könnte man folgende Abfrage verwenden:

SELECT firstname, lastname
FROM Customer
WHERE LastName = (SELECT LastName
FROM Customer
WHERE Id = 612);

Hier wird zuerst in einer Unterabfrage der Nachname des Kunden mit der entsprechenden ID ermittelt. Dieser Wert wird in der äußeren Abfrage mit dem Nachnamen der Kunden verglichen. Die Ausgabe dieser Abfrage:

Ausgabe der Abfrage


In einer Abfrage, bei der im WHERE mit einem = ein Wert mit dem Ergebnis einer Unterabfrage verglichen wird, ist natürlich auch darauf zu achten, dass die Unterabfrage nur ein Ergebnis liefert, da sonst nicht klar ist, mit welchem Wert verglichen werden soll. Es ist auch möglich, in der Unterabfrage auf Werte der äußeren Abfrage zuzugreifen, indem die Tabelle, die in der äußeren Abfrage im FROM verwendet wurde, in der inneren Abfrage mit ihrem Namen referenziert wird. Ein Beispiel dazu findet sich bei den Operatoren, bei denen solche Abfragen oft praktisch sind.