1. ホーム
  2. 記事一覧
  3. SQLでの左結合と右結合の基本を簡単に理解しよう

2024.10.19

SQLでの左結合と右結合の基本を簡単に理解しよう

データベースを扱う際に、複数のテーブルを結合して必要な情報を取り出す操作は非常に一般的です。その中でも、特に「左結合(LEFT JOIN)」と「右結合(RIGHT JOIN)」は、データの統合を行う上で重要な役割を果たします。しかし、それぞれの違いや適切な使い方に迷うことも多いでしょう。

この記事では、左結合と右結合の基本的な仕組みについて、具体的な例を使いながら分かりやすく説明していきます。SQLでのデータ結合を理解することで、複雑なデータの分析や操作がより効果的に行えるようになります。一緒に学んでいきましょう。

結合の基礎知識

結合とは?

データベースでの「結合」は、複数のテーブルを関連付けて1つの結果にまとめる作業です。例えば、顧客情報と注文情報のテーブルを結合することで、顧客ごとの注文履歴を取得することができます。また、従業員の部署情報と個人情報を結合することで、各従業員がどの部署に所属しているのかを明確にすることも可能です。特に、外部結合(LEFT JOIN、RIGHT JOIN)では、どちらのテーブルを基準にするかが重要です。これをしっかり覚えることが、結合の理解には非常に大切です。

結合の役割と価値

結合には、データの一貫性を保ちながら異なるテーブルの情報を統合するための強力なツールです。複数のテーブルから必要なデータを取り出し、新たな情報を作り出すことで、データベース全体の価値を高めることができます。

結合の種類とその動作

結合の種類(内部結合、左結合、右結合)を理解することで、クエリがどのように動作するかを予測し、必要なデータのみを正確に取得することが可能になります。

基準テーブルと結合先テーブルの役割

結合を行う際には、基準テーブルと結合先のテーブルの役割を明確にすることが重要です。これにより、クエリの意図を正確に反映した結果が得られ、データの完全性を維持することができます。

基本的なルール

  • FROMの後に指定されたテーブルが左(左側)
  • JOINの後に指定されたテーブルが右(右側)
  • 基準となるテーブルはLEFT JOINかRIGHT JOINかによる

LEFT JOINの場合、左側のテーブルが基準となり、すべての行が結果に含まれます。RIGHT JOINの場合、右側のテーブルが基準となり、すべての行が結果に含まれます。

左結合(LEFT JOIN)の基本

左結合では、FROMで指定された左側のテーブルを基準にします。左のテーブルのすべての行が結果に含まれ、右のテーブルに対応するデータがない場合は、NULLが表示されます。

また、左結合は主に「基準となるテーブルのデータを全て保持したい」場合に使用されます。たとえば、全ての顧客をリストに表示し、その中で購入があった顧客のみ詳細な情報を結合して表示したいときに利用します。

クラス名簿と宿題提出リストの例

左結合は、クラス名簿と宿題提出リストの関係に例えることができます。

  • クラス名簿(左側)にはすべての生徒の名前が含まれています。
  • 宿題の提出リスト(右側)には提出した生徒の名前のみが含まれます。
SELECT * FROM class_list
LEFT JOIN homework_submissions
ON class_list.student_id = homework_submissions.student_id;

結果として、クラス全員の名前が表示され、宿題を提出していない生徒には「未提出」(NULL)が表示されます。

例: クラス名簿には山田、佐藤、田中の3名が含まれています。宿題提出リストには、山田(提出)、佐藤(提出)とあります。

この場合、結合結果は次の通りです。

  • 山田は「提出済み」
  • 佐藤は「提出済み」
  • 田中は「未提出(NULL)」となります。

右結合(RIGHT JOIN)の基本

右結合では、JOINで指定された右側のテーブルを基準にします。右のテーブルのすべての行が結果に含まれ、左のテーブルに対応するデータがない場合は、NULLが表示されます。

右結合は、左結合とは逆に「結合先のテーブルを基準に全てのデータを保持したい」場合に使用されます。たとえば、すべての商品リストを表示し、その中で実際に販売されたものだけに売上情報を結合して表示したいときに利用します。

商品リストと販売履歴の例

右結合は、商品リストと販売履歴の関係に例えることができます。

  • 商品リスト(右側)にはすべての商品が含まれています。
  • 販売履歴(左側)には売れた商品のみが含まれます。
SELECT * FROM sales
RIGHT JOIN products
ON sales.product_id = products.product_id;

結果として、商品リストのすべての商品が表示され、売れていない商品には「未販売」(NULL)が表示されます。

例: 商品リストには、りんご、みかん、バナナの3商品が含まれています。販売履歴には、りんご(販売)、みかん(販売)があります。

この場合、結合結果は次の通りです。

  • りんごは「販売済み」
  • みかんは「販売済み」
  • バナナは「未販売(NULL)」となります。

左結合と右結合を使用する目的

LEFT JOINやRIGHT JOINを使用する理由は、データの完全性と特定の情報の保持を目的とするためです。

左結合(LEFT JOIN)を使用する目的

左結合を使用する主な理由は、基準となるテーブルのすべてのデータを保持したい場合です。例えば、顧客リストを基準に、全顧客の情報を保持しつつ、その中で購入履歴が存在する顧客にのみ追加情報を表示したい場合に適しています。このようなケースでは、すべての顧客が結果に含まれ、購入履歴がない顧客にはNULLとして表示されます。

右結合(RIGHT JOIN)を使用する目的

右結合は、基準となる結合先テーブルのすべてのデータを保持したい場合に使用します。例えば、商品リストを基準にして、全商品の情報を表示し、その中で販売があった商品のみ売上情報を表示したい場合に適しています。このような場合には、全ての商品の情報を結果に表示し、売上がない商品にはNULLが表示されます。

データの完全性と一貫性の確保

LEFT JOINとRIGHT JOINは、それぞれの基準にしたいテーブルに応じて使用することで、必要なデータを漏れなく取得しつつ、不必要な情報は表示しないようにすることができます。これにより、クエリ結果の完全性と一貫性を確保し、意図した通りのデータを得ることが可能になります。

左結合と右結合の使い分け

左結合と右結合を使い分けるポイントは、基準にしたいテーブルが左か右かです。

  • 左結合(LEFT JOIN)

    左側のテーブル(FROMの後に指定)が基準。すべてのデータを含み、右側にない場合はNULL

  • 右結合(RIGHT JOIN)

    右側のテーブル(JOINの後に指定)が基準。すべてのデータを含み、左側にない場合はNULL

それぞれの用途に応じて、どちらを基準にしたいかを考えることで適切な結合方法を選ぶことができます。

また、結合の選択はデータの内容と分析目的に大きく依存します。結合の目的を明確にし、それに基づいて適切な結合方法を選択することが、データ分析の成功の鍵となります。

まとめ

SQLの左結合と右結合は、 「FROMの後が左、JOINの後が右、そして基準となるのはLEFTかRIGHTかによる」 というシンプルなルールを押さえておけば簡単に理解できます。どちらを使うべきかは、どのテーブルを基準にしたいかに依存します。クエリの結果に含めたいデータに応じて、LEFT JOINやRIGHT JOINを使い分けてください。

このシンプルなルールを繰り返し理解することで、複雑な結合も直感的に使えるようになります。ぜひ、実際に手を動かして試してみてください。少しずつ経験を積んで、より効果的なSQLクエリを作成できるようになりましょう!

参考資料

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事