MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/25 おすすめ情報に 『 【案件】Azure AD関連の認証設計/azureの基本設計 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


データベース(DB)の結合 左外部結合編
profile-img
投稿者: ぴろしきさん
投稿日:2022/10/17 17:35
更新日:
like-img
分類
技術
テクノロジー
全般
キャリア
運用・保守 / テクニカルサポート / 構築 / 設計
投稿内容

こんにちは。


前回内部結合についてお話ししたところですが今回は外部結合の一つである左外部結合についてお話していこうと思います。


おさらいですが、データベースの結合には以下の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   2

3 田中  NULL NULL NULL 


上記のように左側(tablea)にあつテーブルに紐づけの条件を設定し右側テーブル(tableb)をくっつけた結果を表示します。

そのためtablebにあったid5のものについてはtableaには存在しないため結果から除外されました。

またtableaにあるid3のデータについて、tablebにはデータが存在しないためNULLで表示されます。

INNER JOINとは異なり、tableaのデータが除外されることがないということがわかりますね。


現在のインターネットなどでよくあるフォーム入力関連はほとんどこのJOINを利用しておりますので覚えておくと役に立つかもしれません。

また③のRIGHTOUTER JOINと④FULLOUTER JOIN、⑤のCROSS JOINについてはほとんど使用ケースがないので説明は割愛いたします。


結合関連については複雑な部分もあり、苦戦しがちなパートにはなりますが仕組みさえわかれば意外とすんなり行けることもあるので一度どのような動きをするか確認してみるといいかもしれません。


以上!また次回をお楽しみに~

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3