こんにちは。
前回内部結合についてお話ししたところですが今回は外部結合の一つである左外部結合についてお話していこうと思います。
おさらいですが、データベースの結合には以下の5種類あります。
①INNER JOIN(内部結合)
②LEFTOUTER JOIN(左外部結合)
③RIGHTOUTER JOIN(右外部結合)
④FULL OUTER JOIN(外部結合)
⑤CROSS JOIN(交差結合)
前回お話しした内部結合はテーブル同士のデータを照合し、一致しないものについては結合せず除外してしまうためテーブル上から存在しないように見えます。
今回お話しするLEFT OUTER JOINは左側(テーブルA)を基準に適合するデータをくっつけていくということになります。
前回と同じように以下の図で解説してみようと思います。
使用するSQL文は下記です
SELECT*FROM tableA LEFT OUTER JOIN tableB ON tableA.id = tableB.user_id;
tableA tableB
id Name id Class user_id
1 鈴木 1 B 1
2 佐藤 2 A 4
3 田中 3 A 2
4 三ヶ月 5 D 6
結合後は以下のようになります。
id Name id Class user_id
1 鈴木 1 B 1
4 三ヶ月 2 A 4
2 佐藤 3 A 23 田中 NULL NULL NULL
上記のように左側(tablea)にあつテーブルに紐づけの条件を設定し右側テーブル(tableb)をくっつけた結果を表示します。
そのためtablebにあったid5のものについてはtableaには存在しないため結果から除外されました。
またtableaにあるid3のデータについて、tablebにはデータが存在しないためNULLで表示されます。
INNER JOINとは異なり、tableaのデータが除外されることがないということがわかりますね。
現在のインターネットなどでよくあるフォーム入力関連はほとんどこのJOINを利用しておりますので覚えておくと役に立つかもしれません。
また③のRIGHTOUTER JOINと④FULLOUTER JOIN、⑤のCROSS JOINについてはほとんど使用ケースがないので説明は割愛いたします。
結合関連については複雑な部分もあり、苦戦しがちなパートにはなりますが仕組みさえわかれば意外とすんなり行けることもあるので一度どのような動きをするか確認してみるといいかもしれません。
以上!また次回をお楽しみに~