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 つのオプションとして、FULL
、LEFT
、RIGHT
があり、これらのいずれか 1 つを必ず使用する必要があります。FULL
オプションを使用すると、両方のリレーションのタプルが結果に記述されます。ただし、これらのタプルには、結合条件に従ってそれに関連付けられたタプルが他方のリレーションに互いに存在しません。他方のリレーションで該当の属性は、作成されたタプルでNULL
とされます。LEFT
オプションを使用すると、左側のリレーションのすべての行と右側のリレーションのそれらに一致する行が含まれます。RIGHT
オプションを使用すると、右側のリレーションのすべてのタプルと左側のリレーションのそれらに一致する行が含まれます。例: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)