SQL 外部結合 | ||
SQL > SQL コマンド > Outer Join
上述したのは左結合 (left join)と呼ばれ、内部結合 (inner join)とも言われます。そのような場合、二テーブルの中に一致する値があってから、当該データが読み込まれます。では、一方のテーブルにあるデータの値が、他方のテーブルに一つも現われない場合、どうしますか。その場合、 SQL OUTER JOIN (外部結合)コマンドを使います。 外部結合のプログラミングは、データベースにより異なります。例えば、Oracleでは、 テーブル内のデータがすべて必要であることを表すために、 WHERE 句で読み込まれたあらゆるテーブルの後に "(+)" を付けます。 仮に、以下の二つのテーブルがあるとします。 Store_Information テーブル
Geography テーブル
それぞれの店の売上を調べることにします。もし、一般の結合を利用した場合、 Store_Information テーブルに存在しない'New York'といった店のデータが漏れてしまいます。だから、そのような場合、外部結合により、このテーブルを結合します。 SELECT A1.Store_Name, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2 WHERE A1.Store_Name = A2.Store_Name (+) GROUP BY A1.Store_Name; ここに使われた Oracleの外部結合のプログラミングは次の通り。 の結果ができます、
注意: 二つ目のテーブルに対応のデータがない場合、SQL から NULL 值が入ります。 この例において、 'New York' が Store_Information テーブルに存在しないので、その "SALES" フィールドがNULLになります。
|