テーブルの外部結合
左外部結合(LEFT OUTER JOIN)
指定したキー列でテーブルを結合し、左側のテーブル全件に対し右側のテーブルの一致したデータを抽出します。
SELECT テーブル1.列1 ・・・,テーブル2.列1 ・・・ FROM テーブル1
LEFT OUTER JOIN テーブル2 ON テーブル1.列1 = テーブル2.列1;
※OUTERは省略可能です。
それではサンプルを見てみましょう。
以下のようなorderテーブル(上)とitemテーブル(下)があります。
| order_no | item_cd | 
|---|---|
| 1 | A00001 | 
| 2 | A00002 | 
| 3 | A00004 | 
| item_cd | name | 
|---|---|
| A00001 | りんご | 
| A00002 | みかん | 
| A00003 | すいか | 
item_cd列をキーに両テーブルを結合し、左側のテーブル全件と、キーが一致した右側のテーブルのデータを抽出するためのSQLです。
| 1 2 | SELECT T1.order_no, T2.item_cd, T2.name FROM order T1 LEFT JOIN item T2 ON T1.item_cd = T2.item_cd; | 
上記を実行し、抽出された結果がこちらです。
| order_no | item_cd | name | 
|---|---|---|
| 1 | A00001 | りんご | 
| 2 | A00002 | みかん | 
| 3 | A00004 | null | 
左側のテーブル全件に対し、item_cd列が同じである右側のテーブルのデータを結合し抽出されました。
右外部結合(RIGHT OUTER JOIN)
指定したキー列でテーブルを結合し、右側のテーブル全件に対し左側のテーブルの一致したデータを抽出します。
SELECT テーブル1.列1 ・・・,テーブル2.列1 ・・・ FROM テーブル1
RIGHT OUTER JOIN テーブル2 ON テーブル1.列1 = テーブル2.列1;
※OUTERは省略可能です。
それではサンプルを見てみましょう。
以下のようなorderテーブル(上)とitemテーブル(下)があります。
| order_no | item_cd | 
|---|---|
| 1 | A00001 | 
| 2 | A00002 | 
| 3 | A00004 | 
| item_cd | name | 
|---|---|
| A00001 | りんご | 
| A00002 | みかん | 
| A00003 | すいか | 
item_cd列をキーに両テーブルを結合し、右側のテーブル全件と、キーが一致した左側のテーブルのデータを抽出するためのSQLです。
| 1 2 | SELECT T1.order_no, T2.item_cd, T2.name FROM order T1 RIGHT JOIN item T2 ON T1.item_cd = T2.item_cd; | 
上記を実行し、抽出された結果がこちらです。
| order_no | item_cd | name | 
|---|---|---|
| 1 | A00001 | りんご | 
| 2 | A00002 | みかん | 
| null | A00003 | すいか | 
右側のテーブル全件に対し、item_cd列が同じである左側のテーブルのデータを結合し抽出されました。
完全外部結合(FULL OUTER JOIN)
指定したキー列でテーブルを結合し、両テーブルでキー列が一致しなかったデータも含めて抽出します。
SELECT テーブル1.列1 ・・・,テーブル2.列1 ・・・ FROM テーブル1
FULL OUTER JOIN テーブル2 ON テーブル1.列1 = テーブル2.列1;
※OUTERは省略できないので注意
それではサンプルを見てみましょう。
以下のようなorderテーブル(上)とitemテーブル(下)があります。
| order_no | item_cd | 
|---|---|
| 1 | A00001 | 
| 2 | A00002 | 
| 3 | A00004 | 
| item_cd | name | 
|---|---|
| A00001 | りんご | 
| A00002 | みかん | 
| A00003 | すいか | 
item_cd列をキーに両テーブルを結合し、キー列が一致しなかったデータも含めて抽出するためのSQLです。
| 1 2 | SELECT T1.order_no, T2.item_cd, T2.name FROM order T1 FULL OUTER JOIN item T2 ON T1.item_cd = T2.item_cd; | 
上記を実行し、抽出された結果がこちらです。
| order_no | item_cd | name | 
|---|---|---|
| 1 | A00001 | りんご | 
| 2 | A00002 | みかん | 
| null | A00003 | すいか | 
| 3 | A00004 | null | 
両テーブルでキー列が一致しなかったデータも含めて抽出されました。
 
 
以上が、テーブルを外部結合して検索するための「OUTER JOIN」の使い方です。
ぜひ参考にしてみてください。
