SQLにおける結合とはテーブル同士をくっつけることをいいます。結合し、複数のテーブルのデータを集めたテーブルを作ることは多くのメリットがあります。今回は内部結合について紹介します。
結合とは
employeesテーブル
| Id | name | department_id | |
| 1 | 山田 | 1 | yamada@example.com |
| 2 | 田中 | 2 | tanaka@example.com |
| 3 | 佐藤 | 4 | sato@example.com |
departmentsテーブル
| Id | name |
| 1 | 営業部 |
| 2 | マーケティング部 |
| 3 | 開発部 |
内部結合(INNER JOIN)
INNER JOIN(内部結合)とは、テーブルとテーブルを結合するための構文です。INNER(内部)というのは、テーブルとテーブルの互いの条件に一致するレコード(データ行)のみを抽出するということです。
テーブル間を結合する条件はON句につづけて、一般に主キー(PRIMARY KEY)と外部キーを”=”で関連づけます。
SELECT
カラム
FROM
テーブルa
INNER JOIN
テーブルb
ON
テーブルa.カラム = テーブルb.カラム --結合条件下記の様に記載することでemployeesテーブルとdepartmentsテーブルを内部結合することができます。
SELECT
employees.name
FROM
employees
INNER JOIN
departments
ON
employees.department_id = departments.id抽出結果
山田
田中departmentsテーブルにid”4″は存在しないので、employeesテーブルのdepartment_id”4″は抽出されません。
エンジニアからのアドバイス
実際のソフトウェアでは、INNER JOIN がデフォルトになっており、JOIN とだけ書くと INNER JOIN のことを指すことが多いです。王道な結合方法なので他の結合方法との違いも理解しましょう。
また FROMの後にテーブルをカンマで区切って書きWHERE条件で結合する書き方もあります。上記の例の場合、以下のように書くことができます。
SELECT
employees.name
FROM
employees, departments
WHERE
employees.department_id = departments.idどの様に書くかは開発方針に従うべきですが、可読性を上げる書き方をした方が良いでしょう。別の章のと関連しますが、LEFT JOINと書くべきところを書き忘れたのか INNER JOINの省略なのか明確でなくなります。このように書くことができると知識として覚えておき、 内部結合は INNER JOINと書くべきだと思います。
