【初心者向けDB講座-MySQL編-】#7-2:外部結合 outer join

外部結合とは

どちらかのテーブルにデータがあれば取り出す のが外部結合です。
つまり片方のテーブルの情報が全て出力されます。
そのため外部結合は、欠落のあるデータを取り扱う結合といえます。

両方のテーブルにあるデータのみを取り出す のが内部結合です。
2つのテーブルにあって、合体できるデータのみを取り出します。

基本構文 ( left outer join )

left outer join 】左側(from句で最初に書いたテーブル)をマスターとします。

例題:以下の構文の時に基準となるテーブルは device table です。出力結果について考えてみましょう。

構文

利用デバイステーブル(device table)

id name owner_id
1 macbookpro13 1
2 iPad11 1
3 iPhoneSE 2
4 iPhone11 4
5 surface 1

持ち主テーブル(owners table)

id name
1 tanaka
2 yamada
3 sato

結果は以下のようになります。
left outer join なので、device table を基準にします。

  1. device table からデータ全件を取得します。
  2. device table の owner_id がowners table の id と一致するデータを取得します。
  3. owners table にないデータは、 null としてテーブルを結合します。
id name owner_id id name
1 macbookpro13 1 1 tanaka
2 iPad11 1 1 tanaka
3 iPhoneSE 2 2 yamada
4 iPhone11 4 null null
5 surface 1 1 tanaka

基本構文 ( right outer join )

right outer join 】右側(from句で後に書いたテーブル)をマスターとします。

例題:以下の構文の時に基準となるテーブルは owners table です。出力結果について考えてみましょう。

構文

利用デバイステーブル(device table)

id name owner_id
1 macbookpro13 1
2 iPad11 1
3 iPhoneSE 2
4 iPhone11 4
5 surface 1

持ち主テーブル(owners table)

id name
1 tanaka
2 yamada
3 sato

結果は以下のようになります。
right outer join なので、owners table を基準にします。

  1. owners table からデータ全件を取得します。
  2. owners table の id が device table の owner_id と一致するデータを取得します。
  3. device table にないデータは、 null としてテーブルを結合します。
id name owner_id id name
1 macbookpro13 1 1 tanaka
2 iPad11 1 1 tanaka
5 surface 1 1 tanaka
3 iPhoneSE 2 2 yamada
null null null 3 sato
最新情報をチェックしよう!