テーブルの外部結合
左外部結合(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」の使い方です。
ぜひ参考にしてみてください。