SQL > SQL コマンド > Outer Join

上述したのは左結合 (left join)と呼ばれ、内部結合 (inner join)とも言われます。そのような場合、二テーブルの中に一致する値があってから、当該データが読み込まれます。では、一方のテーブルにあるデータの値が、他方のテーブルに一つも現われない場合、どうしますか。その場合、 SQL OUTER JOIN (外部結合)コマンドを使います。

外部結合のプログラミングは、データベースにより異なります。例えば、Oracleでは、 テーブル内のデータがすべて必要であることを表すために、 WHERE 句で読み込まれたあらゆるテーブルの後に "(+)" を付けます。

仮に、以下の二つのテーブルがあるとします。

Store_Information テーブル
Store_Name Sales Txn_Date
Los Angeles 1500 Jan-05-1999
San Diego 250 Jan-07-1999
Los Angeles 300 Jan-08-1999
Boston 700 Jan-08-1999

Geography テーブル
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego

それぞれの店の売上を調べることにします。もし、一般の結合を利用した場合、 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の外部結合のプログラミングは次の通り。

の結果ができます、

Store_Name SALES
Boston 700
New York
Los Angeles 1800
San Diego 250

注意: 二つ目のテーブルに対応のデータがない場合、SQL から NULL 值が入ります。 この例において、 'New York' が Store_Information テーブルに存在しないので、その "SALES" フィールドがNULLになります。

SQL Subquery >>



Copyright © 2017   1keydata.com   All Rights Reserved