検索

[Oracle] データ検索 テーブルの外部結合SQL(OUTER JOIN)

テーブルの外部結合

左外部結合(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です。

上記を実行し、抽出された結果がこちらです。

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です。

上記を実行し、抽出された結果がこちらです。

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です。

上記を実行し、抽出された結果がこちらです。

order_no item_cd name
1 A00001 りんご
2 A00002 みかん
null A00003 すいか
3 A00004 null

両テーブルでキー列が一致しなかったデータも含めて抽出されました。

 
 
以上が、テーブルを外部結合して検索するための「OUTER JOIN」の使い方です。
ぜひ参考にしてみてください。