Joins
Joins combine data from two sources into a single set.This is done on a row-by-row basis and usually involves checking a join condition to determine which rows should be merged and appear in the resulting dataset.There are several types (INNER, OUTER) and classes (qualified, natural, etc.) of joins, each with its own syntax and rules.
Since joins can be chained, the datasets involved in a join may themselves be joined sets.
SELECT
...
FROM <table-reference> [, <table-reference> ...]
[...]
<table-reference> ::= <table-primary> | <joined-table>
<table-primary> ::=
<table-or-query-name> [[AS] correlation-name]
| [LATERAL] <derived-table> [<correlation-or-recognition>]
| <parenthesized-joined-table>
<table-or-query-name> ::=
table-name
| query-name
| [package-name.]procedure-name [(<procedure-args>)]
<procedure-args> ::= <value-expression [, <value-expression> ...]
<correlation-or-recognition> ::=
[AS] correlation-name [(<column-name-list>)]
<column-name-list> ::= column-name [, column-name ...]
<derived-table> ::= (<query-expression>)
<parenthesized-joined-table> ::=
(<parenthesized-joined-table)
| (<joined-table>)
<joined-table> ::=
<cross-join>
| <natural-join>
| <qualified-join>
<cross-join>
<table-reference> CROSS JOIN <table-primary>
<natural-join> ::=
<table-reference> NATURAL [<join-type>] JOIN <table-primary>
<join-type> ::= INNER | { LEFT | RIGHT | FULL } [OUTER]
<qualified-join> ::=
<table-reference> [<join-type>] JOIN <table-primary>
{ ON <search-condition>
| USING (<column-name-list>) }
| Argument | Description |
|---|---|
table-name |
Name of a table or view |
query-name |
Name of a CTE |
package-name |
Name of a package |
procedure-name |
Name of a selectable stored procedure |
procedure-args |
Selectable stored procedure input parameter(s) |
derived-table |
Derived table query expression |
correlation-name |
The alias of a data source (table, view, procedure, CTE, derived table) |
column-name |
Name or alias for a column in a relation, CTE or derived table |
search-condition |
Join condition (criterion) |
column-name-list |
List of aliases of the columns of a derived table, or the list of columns used for an equi-join |