トップDML選択(結合) ≫ テーブルを外部結合する

テーブルを外部結合する

外部結合を使用すると指定した列のデータがテーブルのどちらか一方にしかないレコードも抽出することができます. 外部結合には左外部結合,右外部結合,完全外部結合があります.

左外部結合

左外部結合は結合する列のデータを基準として,左側の表の内容をすべて抽出し,右側の表の内容は左側の表の内容と一致するもののみ抽出する結合です. 左外部結合を使用するにはLEFT OUTERE JOINを使用します.

SELECT 列名1, 列名2, ...
FROM テーブル名1 LEFT [OUTER] JOIN テーブル名2
  ON テーブル名1.列名 = テーブル名2.列名
[WHERE 条件式など]

LEFT OUTER JOINで結合するテーブルを指定し,どの列をキーにして結合するかをON句で指定します.なお,OUTERは省略可能です.
サンプルに移動

右外部結合

右外部結合は左外部結合の反対です.すなわち結合する列のデータを基準として,右側の表の内容をすべて抽出し,左側の表の内容は左側の表の内容と一致するもののみ抽出します.右外部結合を使用するにはRIGHT OUTERE JOINを使用します.

SELECT 列名1, 列名2, ...
FROM テーブル名1 RIGHT [OUTER] JOIN テーブル名2
  ON テーブル名1.列名 = テーブル名2.列名
[WHERE 条件式など]

RIGHT OUTER JOINで結合するテーブルを指定し,どの列をキーにして結合するかをON句で指定します.なお,OUTERは省略可能です.
サンプルに移動

完全外部結合

完全外部結合は2つのテーブルそれぞれに一致しないレコードも抽出結果に含めます. 完全外部結合を使用するにはFULL OUTER JOINを使用します.

SELECT 列名1, 列名2, ...
FROM テーブル名1 FULL OUTER JOIN テーブル名2
  ON テーブル名1.列名 = テーブル名2.列名
[WHERE 条件式など]

FULL OUTER JOINで結合するテーブルを指定し,どの列をキーにして結合するかをON句で指定します.
サンプルに移動

まとめ

外部結合をまとめると以下のようになります.

外部結合SQL省略形
左外部結合LEFT OUTER JOINLEFT JOIN
右外部結合RIGHT OUTER JOINRIGHT JOIN
完全外部結合FULL OUTER JOIN-

SQL サンプル

例として売上伝票と商品マスタを商品コードをキーにして結合します.

売上明細

伝票番号商品コード
01-101A001
01-102A002
01-103B002
01-104D001

商品

商品コード商品名
A001冷蔵庫
A002洗濯機
B001エアコン
B002空気清浄機
C001液晶テレビ

左外部結合

SQL

SELECT 売上明細.伝票番号, 商品.商品コード, 商品.商品名
FROM 売上明細 LEFT OUTER JOIN 商品
  ON 売上明細.商品コード = 商品.商品コード

結果

伝票番号商品コード商品名
01-101A001冷蔵庫
01-102A002洗濯機
01-103B002空気清浄機
01-104D001<NULL>

右外部結合

SQL

SELECT 売上明細.伝票番号, 商品.商品コード, 商品.商品名
FROM 売上明細 RIGHT OUTER JOIN 商品
  ON 売上明細.商品コード = 商品.商品コード

結果

伝票番号商品コード商品名
01-101A001冷蔵庫
01-102A002洗濯機
<NULL>B001エアコン
01-103B002空気清浄機
<NULL>C001液晶テレビ

完全外部結合

SQL

SELECT 売上明細.伝票番号, 商品.商品コード, 商品.商品名
FROM 売上明細 FULL OUTER JOIN 商品
  ON 売上明細.商品コード = 商品.商品コード

結果

伝票番号商品コード商品名
01-101A001冷蔵庫
01-102A002洗濯機
<NULL>B001エアコン
01-103B002空気清浄機
<NULL>C001液晶テレビ
01-104D001<NULL>