join-condition

join-condition は、照会で使用される結合条件を指定します。

join-condition

INNER、LEFT OUTER、および RIGHT OUTER 結合の場合:

>>-search-condition--------------------------------------------><

FULL OUTER 結合の場合:

   .-AND-------------------------------------------.   
   V                                               |   
>>---full-join-expression--=--full-join-expression-+-----------><

full-join-expression:

>>-+-+-column-name-------+--------------------------------------------+-><
   | |               (1) |                                            |   
   | '-cast-function-----'                                            |   
   |                                   .--------------------------.   |   
   |                                   V                          |   |   
   '-COALESCE--(-+-column-name-------+---+-,--column-name-------+-+-)-'   
                 |               (1) |   |                  (1) |         
                 '-cast-function-----'   '-,--cast-function-----'         

注:
  1. cast-function には列しか指定 できません。キャストするデータ・タイプは特殊タイプまたは、特殊タイプが 基づいているデータ・タイプでなければなりません。

INNER、LEFT OUTER、および RIGHT OUTER 結合の場合、join-condition は 以下の規則に準拠している search-condition でなければなりません。

  • 1 つの例外を除き、副照会を含むことはできません。関連する FROM 文節 に join-condition を指定した結合表 が INNER 結合のみで構成されている 場合、その join-condition は副照会を含むことができます。
  • join-condition の式で参照する列は、関連する 結合演算子 (同じ joined-table 文節の有効範囲内) のいずれかのオペランド表の列でなければなりません。

FULL OUTER (または FULL) 結合の場合、join-condition は、述部 を AND によってのみ結合できるような検索条件です。さらに、各述部の形式は「expression = expression」でなければなりません。 ここで、1 つの式は、関連する結合演算子のいずれかのオペランド表の列だけを 参照し、他の式は、他のオペランド表の列だけを参照します。各式の値は比較可能でなければなりません。数値とストリングのデータ・タイプの間の暗黙的なキャストは、FULL OUTER 結合ではサポートされていません。

FULL OUTER 結合内の各 full-join-expression には、列名または列を 参照する cast 関数が含まれていなければいけません。COALESCE 関数は使用できます。

いずれのタイプの結合でも、join-condition の式内の列参照 が 列名修飾子と列名の解決で指定された列名修飾子の解決のための規則を使用して解決されてから、列をどの表に所属させるかに関する規則が適用されます。