JOIN 操作

JOIN 操作 (結合操作) では、2 つ以上のビューのレコードを結合します。そのためには、以下の構造を使用する必要があります。

FROM view1 JOIN view2 ON (joinCondition)

joinCondition には、必要な結合条件を指定します。通常、この条件には、 JOIN で使用するビューにあるフィールドどうしの比較のみを記述します。ただし、関数を使用した式やリテラルとの比較などを指定することもできます。

以下の修飾子を JOIN 句で使用できます。

  • INNER: 実行される結合操作は 内部 タイプです。「内部結合」の結果には、結合条件に従って関連付けられた両方のリレーションのタプルで構成されたタプルのみが存在します。これは最も一般的な結合タイプであり、デフォルトでは、この結合が使用されます。以下に例を示します。

    FROM view1 JOIN view2 ON (joinCondition)
    FROM view1 INNER JOIN view2 ON (joinCondition)
    
  • OUTER: 実行される結合操作は 外部 タイプです。「外部結合」には 3 つのオプションとして、 FULLLEFTRIGHT があり、これらのいずれか 1 つを必ず使用する必要があります。 FULL オプションを使用すると、両方のリレーションのタプルが結果に記述されます。ただし、これらのタプルには、結合条件に従ってそれに関連付けられたタプルが他方のリレーションに互いに存在しません。他方のリレーションで該当の属性は、作成されたタプルで NULL とされます。

    LEFT オプションを使用すると、1 番目のリレーションにあるタプルのうち、関連付けられたタプルが 2 番目のリレーションに存在しないタプルのみが結果に記述されます。 RIGHT オプションを使用すると、2 番目のリレーションにあるタプルのうち、関連付けられたタプルが 1 番目のリレーションに存在しないタプルのみが結果に記述されます。以下に例を示します。

    FROM view1 FULL OUTER JOIN view2 ON (joinCondition)
    FROM view1 LEFT OUTER JOIN view2 ON (joinCondition)
    FROM view1 RIGHT OUTER JOIN view2 ON (joinCondition)
    
  • NATURAL: 自然結合操作が実行されます。このタイプの結合では、演算子 = を使用して、同じ名前の属性を両方の入力リレーションどうしで関連付けることによって結合が実行されるので、条件は指定しません。内部結合と外部結合の両方で、このオプションを使用できます。以下に例を示します。

    FROM view1 NATURAL JOIN view2
    FROM view1 NATURAL LEFT OUTER JOIN view2
    
  • CROSS: 指定したビューの外積の操作が実行されます。JOIN を使用せずに、FROM 句にリレーションを記述した操作と同じです。以下に例を示します。

    FROM view1 CROSS JOIN view2
    

結合条件を指定する代わりに、 USING 句を使用して、同じ名前と型で両方のリレーションに存在する属性のリストを指定することもできます。指定した属性の中に、結合ツリーの一部のブランチに存在しないものがある場合、または両方のブランチで型が一致しないものがある場合はエラーが発生します。以下に例を示します。

FROM view1 JOIN view2 USING (attribute1,…,attributeN)