Quick Ref.
Functions
date
number
string
Data Types
date
number
string

Anwenden verschachtelter SELECT-Anweisungen

Das Ergebnis einer SELECT-Anweisung kann als Wert in einer anderen Anweisung verwendet werden. Die Anweisung SELECT region FROM bbc WHERE name = 'Brazil' liefert bspw. den Wert 'Americas'. Dieser Wert kann verwendet werden, um eine Liste aller Länder in der gleichen Region wie 'Brazil' zu erhalten.

1. Eine verschachtelte SELECT-Anweisung mit =

Results

Eine verschachtelte SELECT-Anweisung ist nicht das Gleiche wie ein Join!

Zwei Länder namens Brazil?

Oft wird die verschachtelte Anweisung mit einem einzigen Wert verglichen, wie im obigen Beispiel. Die Anweisung SELECT region FROM bbc WHERE name = 'Brazil' sollte genau eine Region zurückliefern, nämlich 'Americas'. Aber was würde geschehen, wenn z.B. ein neues europäisches Land gegründet wird, daß sich Brazil nennt?

Das Ergebnis wäre ein Laufzeitfehler. Die Syntax der SQL-Anweisung ist korrekt und das DBMS würde versuchen, die Anweisung auszuführen. Der Fehler tritt dann beim Ausführen der äußeren Anweisung auf. Denn obige Anweisung bedeutet das Gleiche wie die Anweisung SELECT name FROM bbc WHERE region = ('Americas', 'Europe'). Der Fehler würde auch auftreten, wenn es in der Tabelle kein Land gäbe, das Brazil heißt.

Beim Vergleich auf Brazil würde die Abfrage mit einer Fehlermeldung abbrechen. In dem Fall wäre es aber sinnvoll (und korrekt), wenn eine leere Tabelle zurückgeliefert wird.

Verwenden mehrerer Ergebniswerte in SQL

Es gibt viele Anwendungsfälle, in denen der Vergleich mit einer Werteliste erforderlich ist. So prüft der "IN"-Operator einen einzelnen Wert gegen eine Werteliste. Das folgende Beispiel wird fehlerfrei ausgeführt, egal wie wiele Brazils es gibt.

2. Eine verschachtele SELECT-Anweisung mit IN

Results

Es gibt weitere Operatoren wie "ALL" und "ANY", die in ähnlichen Fällen verwendet werden.