Geschachtelte Anfrage (Subquery)

Eine geschachtelte Anfrage (Unteranfrage / Subquery) is ein vollständiger SELECT-FROM-WHERE-Block, der innerhalb der WHERE- oder HAVING-Klausel einer übergeordneten, äußeren Anfrage eingebettet ist. Sie dient der dynamischen Datenfilterung und wird über spezifische relationale Operatoren ausgewertet:

Man unterscheidet zwei fundamentale Auswertungsmechanismen:

  1. Unkorrelierte Unteranfrage: Die innere Anfrage ist vollkommen autark und enthält keine Variablenbindung zur äußeren Abfrage. Sie wird genau einmal isoliert ausgeführt und ihr statisches Ergebnis an die äußere Klausel übergeben.
  2. Korrelierte Unteranfrage: Eine geschachtelte Anfrage ist korreliert, wenn eine Bedingung innerhalb ihrer inneren WHERE-Klausel ein Attribut einer Relation referenziert, die in der äußeren Anfrage deklariert ist (äußere Bindung). Konzeptionell ist die Abfrage zustandsbehaftet: Die Unteranfrage verhält sich wie eine Schleife und muss einmal für jedes Tupel (oder jede Tupelkombination) der äußeren Anfrage neu evaluiert werden.