Es besteht die Möglichkeit, eine SQL-Anweisung in eine andere einzubetten. Geschieht dies in WHERE- oder HAVING-Anweisungen, ergibt sich eine Unteranfrage.
Die Syntax sieht folgendermaßen aus:
SELECT "Spalten_Name1"
FROM "Tabellen_Name1"
WHERE "Spalten_Name2"
[Vergleichsoperator]
(SELECT "Spalten_Name3"
FROM "Tabellen_Name2"
WHERE [Bedingung])
[Vergleichsoperator] kann ein Gleichungszeichen wie =, >, <, >=, <= sein. Auch ein Textoperator wie "LIKE" ist möglich.
Wir verwenden das gleiche Beispiel wie für die SQL-Joins,
Tabelle Store_Information
| store_name |
Sales |
Date |
| Los Angeles |
1500€ |
05.Jan.1999 |
| San Diego |
250€ |
07.Jan.1999 |
| Los Angeles |
300€ |
08.Jan.1999 |
| Boston |
700€ |
08.Jan.1999 |
Tabelle Geography
| region_name |
store_name |
| East |
Boston |
| East |
New York |
| West |
Los Angeles |
| West |
San Diego |
und möchten nun mit Hilfe einer Unterabfrage die Umsätze aller Warenhäuser in der Region West ermitteln. Dazu verwenden wir folgende SQL-Anweisung:
SELECT SUM(Sales) FROM Store_Information
WHERE Store_name IN
(SELECT store_name FROM Geography
WHERE region_name = 'West')
Ergebnis:
In diesem Beispiel werden die beiden Tabellen nicht direkt verknüpft, um dann nur die Umsätze für die Warenhäuser in der westlichen Region zu addieren, sondern wir ermitteln erst mit der Unterabfrage, welche Warenhäuser zur Region West gehören und addieren anschließend die entsprechenden Umsätze.