SQLの「OUTER JOIN」を使えば、テーブルを外部結合することができます。
(左)外部結合の基本構文
SELECT 列名
FROM テーブル名1 LEFT OUTER JOIN テーブル名2 ON 結合条件;
(右)外部結合の基本構文
SELECT 列名
FROM テーブル名1 RIGHT OUTER JOIN テーブル名2 ON 結合条件;
※OUTERは省略可
本記事では、テーブルの外部結合を行う方法を解説していきます。
テーブルの外部結合
テーブルの結合には「内部結合」と「外部結合」があります。
「内部結合」とは両方のテーブルに存在するデータを抽出する結合のことで、「外部結合」とは、基準となるテーブルに存在すれば抽出する結合のことです。
左側のテーブルを基準とするのが「左外部結合」(LEFT OUTER JOIN)です。
[左外部結合のイメージ例]
以下の例では、LEFT OUTER JOINを使い「userテーブル」と「departmentテーブル」を「user.department_id = department.id」の条件で左外部結合しています。
■LEFT OUTER JOINを使った左外部結合の例
SELECT user.id, user.name, department.name
FROM user
LEFT OUTER JOIN department ON user.department_id = department.id;
左外部結合した結果、基準となる「user」テーブルに存在するデータを抽出して、「department」テーブルからは条件に一致したデータのみ抽出しています。
そのため、部署IDが「user」テーブルにしか存在しない部署ID「4」のレコードは、「user」テーブルの項目(カラム)である社員ID、社員名しか設定されていません。(部署名はNULLとなります)
右外部結合(RIGHT OUTER JOIN)
右側のテーブルを基準とするのが「右外部結合」(RIGHT OUTER JOIN)です。
[右外部結合のイメージ例]
以下の例では、RIGHT OUTER JOINを使い「userテーブル」と「departmentテーブル」を「user.department_id = department.id」の条件で右外部結合しています。
SELECT user.id, user.name, department.name
FROM user
RIGHT OUTER JOIN department ON user.department_id = department.id;
右外部結合した結果、基準となる「department」テーブルに存在するデータを抽出し、「user」テーブルからは条件に一致したデータのみ抽出しています。
そのため、部署IDが「department」テーブルにしか存在しない部署ID「3」のレコードは、「department」テーブルの項目(カラム)である部署名しか設定されていません。(社員ID、社員名はNULLとなります)
学習書の紹介
プログラマのためのSQL第4版 すべてを知り尽くしたいあなたに [ ジョー・セルコ ] 価格:5,060円 |
プログラマのためのSQL 第4版 すべてを知り尽くしたいあなたに
SQLの第一人者であるジョー・セルコの名著『Joe Celkos SQL for Smarties, Fourth Edition: Advanced SQL Programming』の日本語版です。本書は、SQLの実務経験があるエンジニアを対象として、SQLプログラミングの基礎的な考え方から、テーブル操作、グループ化、集計関数、クエリの最適化など、SQL全般について詳しく解説した「SQLプログラミングバイブル」です。基本から高度なテクニックまで、網羅的にSQLプログラミングの知識を習得できます。翻訳・監修は『達人に学ぶSQL徹底指南書』でおなじみのミック氏が担当。
SQLエンジニア必携の一冊です。