Unterabfragen (INNER SELECT)
Hinter Bedingungsoperatoren in WHERE- oder HAVING-Ausdrücken dürfen Unterabfragen verwendet werden. Einschränkungen:
Die innere SELECT-Anweisung darf nur einen Tabellenausdruck enthalten
Die ORDER BY – Klausel darf innerhalb einer Unterabfrage nicht verwendet werden.
Beispiel:
Es sollen alle Kunden mit Kundennummer, Familienname und Ausweisnummer aus einer fiktiven Video-Verleih-Datenbank herausgesucht werden, die Horrorvideos ausgeliehen haben und die in der Tabelle Gewaltverbrecher mit einer Vorstrafe registriert sind.
| SELECT KundenNr,
Familienname, Ausleihe.AusweisNr FROM Kunden WHERE KundenNr =
AND Ausleihe.AusweisNr IN
|
Gültigkeitsbereich von Spalten (Attributen) bei Unterabfragen
Ein wichtiger Gesichtspunkt bei Unterabfragen ist die Frage, welche Datenobjekte (Datenfelder) in den jeweiligen Unterabfragen gültig (bekannt) sind und verwendet werden dürfen.

Regel
Attribute (Spalten, Datenfelder) aus den jeweils äußeren Abfrageblöcken dürfen im inneren Abfrageblock an jeder Stelle verwendet werden - aber nicht umgekehrt - .
So können im Abfrageblock 1 'Abfrage 1' nur Attribute aus der Tabelle A verwendet werden. Im Abfrageblock 2 können Attribute aus den Tabellen A und B verwendet werden und im Abfrageblock 3 Attribute aus A, B und C.
Werden in den Tabellen Attribute mit gleichen Attributbezeichnern verwendet, z.B. KundenNr, müssen im jeweiligen Abfrageblock qualifizierte Bezeichner (A.KundenNr, B.KundeNr, C.KundenNr) benutzt werden.
Man spricht bei der Frage des Gültigkeitsbereiches auch von der Reichweite eines Attributes in einer Tabelle. So haben in obigem Beispiel die Attribute der Tabelle A die Reichweite Abfrage 1, Abfrage 2, Abfrage 3 und Abfrage 4. Die Attribute der Tabelle B haben lediglich die Reichweite Abfrage 1 und Abfrage 3.