A joined table (joined_table) can be specified as part of a FROM TABLE specification (from_table_spec).
Syntax
<joined_table> ::= <from_table_spec> CROSS JOIN <from_table_spec> | <from_table_spec> [INNER] JOIN <from_table_spec> <join_spec> | <from_table_spec> [LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER]] JOIN <from_table_spec> <join_spec> <join_spec> ::= ON <search_condition>
If a FROM TABLE- specification comprises a joined table, the result is generated as follows:
Let FT1 be the set of all rows in the table specified by the first FROM TABLE specification. Let FT2 by the set of all rows in the table specified by the second FROM TABLE specification.
If the joined table is specified as CROSS JOIN, a table is created that comprises all possible combinations of FT1 and FT2. From a mathematical perspective, the Cartesian product of the two tables is calculated.
If the joined table is specified with the keyword JOIN without the optional keywords INNER, LEFT, RIGHT, FULL or OUTER, the join type is assumed to be INNER.
Let T be the set of result rows consisting of all possible combinations of FT1 and FT2. Each result row satisfies the JOIN specification (join_spec) for this set.
If the joined table is specified with the join type INNER, the result is the set T.
If the joined table is specified with the join type LEFT, the result is the set T plus the rows from FT1 that are not in T. The result columns that are not formed from FT1 are assigned the NULL value.
If the joined table is specified with the join type RIGHT, the result is the set T plus the rows from FT2 that are not in T. The result columns that are not formed from FT2 are assigned the NULL value.
If the joined table is specified with the join type FULL, the result is the set T plus the rows that are added by the join types LEFT and RIGHT.
The rules specified for the WHERE condition apply to the JOIN specification ON <search_condition>, with the restriction that no links using the Boolean operator OR are permitted.