Die Angabe einer Join-Tabelle (joined_table) ist ein möglicher Bestandteil einer FROM TABLE-Spezifikation (from_table_spec).
<joined_table> ::=
<from_table_spec> CROSS JOIN <from_table_spec>
| <from_table_spec> [INNER] JOIN <from_table_spec>
<join_spec>
| <from_table_spec> [<LEFT|RIGHT|FULL> [OUTER]] JOIN
<from_table_spec> <join_spec>
<join_spec> ::= ON <search_condition>
from_table_spec, search_condition
Besteht eine FROM TABLE-Spezifikation aus einer Join-Tabelle, so wird das Ergebnis wie folgt erzeugt:
Sei FT1 die Menge aller Zeilen der Tabelle, die durch die erste FROM TABLE-Spezifikation angegeben wird. FT2 sei die Menge aller Zeilen der Tabelle, die durch die zweite FROM TABLE-Spezifikation angegeben wird.
· Wenn die Join-Tabelle als CROSS JOIN angegeben ist, wird eine Tabelle erzeugt, die aus allen möglichen Kombinationen von FT1 und FT2 besteht. Es wird also im mathematischen Sinn das kartesische Produkt beider Tabellen gebildet.
· Wenn die Join-Tabelle mit dem Schlüsselwort JOIN ohne Angabe der optionalen Schlüsselwörter INNER, LEFT, RIGHT, FULL oder OUTER angegeben wird, so wird als Join-Typ INNER angenommen.
Sei T die Menge von Ergebniszeilen, die aus allen möglichen Kombinationen von FT1 und FT2 besteht und für die gilt, dass jede Ergebniszeile die JOIN-Spezifikation (join_spec) erfüllt.
· Wenn die Join-Tabelle mit dem Join-Typ INNER angegeben wird, ist das Ergebnis die Menge T.
· Wenn die Join-Tabelle mit dem Join-Typ LEFT angegeben wird, ist das Ergebnis die Menge T ergänzt um jene Zeilen aus FT1, die nicht in T eingegangen sind. Die nicht aus FT1 gebildeten Ergebnisspalten erhalten den NULL-Wert.
· Wenn die Join-Tabelle mit dem Join-Typ RIGHT angegeben wird, ist das Ergebnis die Menge T ergänzt um jene Zeilen aus FT2, die nicht in T eingegangen sind. Die nicht aus FT2 gebildeten Ergebnisspalten erhalten den NULL-Wert.
· Wenn Join-Tabelle mit dem Join-Typ FULL angegeben wird, ist das Ergebnis die Menge T ergänzt um jene Zeilen, die durch die Join-Typen LEFT und RIGHT hinzugefügt werden.
Für die JOIN-Spezifikation (join_spec) ON <search_condition> gelten die für die WHERE-Bedingung angegebenen Regeln mit der Einschränkung, dass keine Verknüpfungen mit dem booleschen Operator OR zugelassen sind.