Anfang des Inhaltsbereichs

FROM TABLE-Spezifikation (from_table_spec) Dokument im Navigationsbaum lokalisieren

Jede FROM TABLE-Spezifikation (from_table_spec) in einer FROM-Klausel spezifiziert keinen, einen oder beliebig viele Tabellenbezeichner.

Syntax

<from_table_spec> ::= <table_name> [AS] [<reference_name>]
| <result_table_name> [AS] [<reference_name>]
| (<query_expression>) [AS] [<reference_name>]
| <joined_table>

table_name, reference_name, result_table_name, query_expression, joined_table

Erläuterung

Referenzname (reference_name)

Wenn eine FROM TABLE-Spezifikation keinen Referenznamen enthält, ist der Tabellenname (table_name) bzw. der Ergebnistabellenname (result_table_name) der Tabellenbezeichner.

Wenn eine FROM TABLE-Spezifikation einen Referenznamen enthält, ist der Referenzname der Tabellenbezeichner.

Jeder Referenzname muß sich von jedem Bezeichner, der einen Tabellennamen angibt, unterscheiden. Wenn ein Ergebnistabellenname ein Tabellenbezeichner ist, darf es keinen Tabellenbezeichner der Form <table_name> gleich [<owner.]<result_table_name> geben, wobei der Eigentümer der aktuelle Benutzer ist. Jeder Tabellenbezeichner muß sich von jedem anderen Tabellenbezeichner unterscheiden.

Der Gültigkeitsbereich der Tabellenbezeichner ist die ganze QUERY-Spezifikation, innerhalb der die FROM TABLE-Spezifikation verwendet wird. Wenn innerhalb der QUERY-Spezifikation Spaltennamen qualifiziert werden sollen, muß das mit den Tabellenbezeichnern geschehen.

Referenznamen sind unbedingt nötig für die Formulierung von JOIN-Bedingungen einer Tabelle mit sich selbst. Zum Beispiel wird durch FROM HOTEL, HOTEL X ein Referenzname X für das zweite Auftreten der Tabelle HOTEL definiert. Darüber hinaus sind Referenznamen manchmal nötig für die Formulierung von Correlated Subqueries. Außerdem ist ein Referenzname notwendig, wenn nur durch die Angabe des Referenznamens eine Spalte des Ergebnisses des QUERY-Ausdrucks eindeutig bezeichnet werden kann.

Anzahl der zugrundeliegenden Tabellen

Wenn eine FROM TABLE-Spezifikation eine Basistabelle, eine Ergebnistabelle oder das Ergebnis eines QUERY-Ausdrucks bezeichnet, ist die Anzahl der zugrundeliegenden Tabellen dieser FROM TABLE-Spezifikation gleich 1.

Wenn eine FROM TABLE-Spezifikation eine komplexe View-Tabelle bezeichnet, ist die Anzahl der zugrundeliegenden Tabellen dieser FROM TABLE-Spezifikation gleich 1.

Wenn eine FROM TABLE-Spezifikation eine View-Tabelle bezeichnet, die keine komplexe View-Tabelle ist, ist die Anzahl der zugrundeliegenden Tabellen gleich der Anzahl der zugrundeliegenden Tabellen der FROM-Bedingung der View-Tabelle.

Wenn eine FROM TABLE-Spezifikation eine JOINED TABLE (joined_table) bezeichnet, ist die Anzahl der zugrundeliegenden Tabellen dieser FROM TABLE-Spezifikation die Summe der zugrundeliegenden Tabellen der in ihr enthaltenen FROM TABLE-Spezifikationen.

QUERY-Ausdruck (query_expression)

Eine FROM TABLE-Spezifikation, in der ein QUERY-Ausdruck (query_expression) enthalten ist, spezifiziert nur dann einen Tabellenbezeichner, wenn ein Referenzname (reference_name) angegeben ist.

Enthält eine FROM TABLE-Spezifikation einen QUERY-Ausdruck, so wird eine Ergebnistabelle gebildet, die diesem QUERY-Ausdruck entspricht. Diese Ergebnistabelle erhält einen systeminternen Namen, der weder mit einer unbenannten noch einer benannten Ergebnistabelle kollidiert. Während der Bearbeitung der FROM-Bedingung wird das Ergebnis des QUERY-Ausdrucks wie eine benannte Ergebnistabelle verwendet und nach der Bearbeitung implizit gelöscht.

Ein Tabellenausdruck, in dem mindestens ein OUTER JOIN-Indikator (siehe JOIN-Prädikat) oder OUTER JOIN TYPE (LEFT | RIGHT | FULL) (siehe joined_table) angegeben wird, ist strengen Restriktionen unterworfen, wenn mehr als zwei Tabellen zugrundeliegen sollen. Daher ist die Verwendung eines QUERY-Ausdrucks häufig notwendig für die Formulierung einer QUERY-Spezifikation, der mindestens drei Tabellen zugrundeliegen sollen und in der mindestens ein OUTER JOIN-Indikator in einem JOIN-Prädikat verwendet wird.

JOINED TABLE (joined_table)

Eine FROM TABLE-Spezifikation, in der ein JOINED TABLE (joined_table) enthalten ist, spezifiziert so viele Tabellenbezeichner wie durch die in ihr enthaltenen FROM TABLE-Spezifikationen angegeben sind.

 

Ende des Inhaltsbereichs