Ein JOIN-Prädikat (join_predicate) ist ein Prädikat, das einen Join spezifiziert.
Ein Join ist eine SQL-Anweisung, die mehrere Tabellen miteinander verknüpft und als Ergebnis eine Join-Tabelle liefert.
Ein JOIN-Prädikat kann ohne, mit einem oder mit zwei OUTER JOIN-Indikatoren angegeben werden.
<join_predicate> ::=
<expression>
[<outer_join_indicator>] <comp_op> <expression> [<outer_join_indicator>]
<outer_join_indicator> ::= (+)
<comp_op> ::= < | > |
<> | != | = | <= | >=
| ~= | ~< |
~>
(für Computer mit
ASCII-Code)
SQL-Tutorial, Joins: Informationen aus mehreren
Tabellen
Jeder Ausdruck expression muss eine Spaltenspezifikation enthalten. Es muss eine Spaltenspezifikation des ersten Ausdrucks und eine Spaltenspezifikation des zweiten Ausdrucks geben, so dass sich die beiden Spaltenspezifikationen auf verschiedene Tabellennamen oder Referenznamen beziehen.
Sei x der Wert des ersten Ausdrucks und y der Wert des zweiten Ausdrucks. Die Werte x und y müssen vergleichbar sein.
Das JOIN-Prädikat ist ein Spezialfall des Vergleichsprädikats. Es gelten die für ein Vergleichsprädikat angegebenen Regeln.
Wenn mindestens ein OUTER JOIN-Indikator outer_join_indicator in einem JOIN-Prädikat einer Suchbedingung angegeben wird, dürfen dem entsprechenden Tabellenausdruck nur genau zwei Tabellen zugrundeliegen oder es muss folgendes gelten:
● Nur für eine der in der FROM-Klausel angegebenen Tabellen werden OUTER JOIN-Indikatoren angegeben.
● Alle JOIN-Prädikate dieser Tabelle zu genau einer anderen Tabelle enthalten jeweils den OUTER JOIN-Indikator.
● Alle anderen JOIN-Prädikate enthalten keinen OUTER JOIN-Indikator.
Wenn für einen JOIN mehr als zwei Tabellen für die QUERY-Spezifikation notwendig sind und kann eine der oben genannten Regeln nicht eingehalten werden, kann auch ein QUERY-Ausdruck in der FROM-Klausel verwendet werden.
Es werden nur solche Zeilen einer Tabelle in die Ergebnistabelle übertragen, die ein dem Vergleichsoperator comp_op entsprechendes Gegenstück in der anderen im JOIN-Prädikat angegebenen Tabelle haben.
Wenn sichergestellt werden soll, dass jede Zeile einer Tabelle mindestens einmal in der Ergebnistabelle enthalten ist, muss der OUTER JOIN-Indikator auf der Seite des Vergleichsoperators angegeben werden, auf der die andere Tabelle spezifiziert ist.
Es wird dann (wenn für eine Zeile einer Tabelle nicht mindestens ein Gegenstück in der anderen Tabelle gefunden werden kann) aus der Tabelle trotzdem eine Zeile für die Ergebnistabelle gebildet. Dabei wird für die Ausgabespalten, die aus Spalten der anderen Tabelle gebildet werden, der NULL-Wert verwendet.
Da der OUTER JOIN-Indikator auf beiden Seiten des Vergleichsoperators angegeben werden kann, wenn dem Tabellenausdruck nur genau zwei Tabellen zugrundeliegen, kann für beide Tabellen sichergestellt werden, dass jede Zeile mindestens einmal in der Ergebnistabelle enthalten ist.
Siehe auch:
Join-View-Tabelle in einer INSERT-Anweisung
Änderbare Join-View-Tabelle (CREATE VIEW-Anweisung)
Restriktionen für SQL-Anweisungen
Konzepte des Datenbanksystems, Suchstrategien für Joins, EXPLAIN-Anweisung für Joins