目次
JOINとは?
JOIN(ジョイン)
結合する、(…を)接合する、つなぐ、取り付ける、結合させる、加わる、加入する、(…の)仲間になる、帰任する、一緒になる
Weblio英和辞書
SQLでの「JOIN」とは、「2つのデータテーブルを結合する」という意味があります
片方のテーブルに無い情報を別のテーブルから取ってくることができます
データベース(正確にはリレーショナルデータベース)では情報を細分化して格納します
「学校の情報」で例えるなら、下記ようなデータが複数のテーブル内で存在します
- 生徒名簿:生徒名、部活、出身学校など
- 出席簿:日付、欠席数、遅刻数
- 中間テスト点数:国語、英語、数学など
- 期末テスト点数:国語、英語、数学など
- 運動テスト:50m走タイム、幅跳び距離など
「中間テスト」の点数の平均点を「部活ごと」に見たいとなったとき
「中間テスト」のテーブルに「生徒名簿」をJOIN(結合)することで
1つのテーブルとして処理をすることができるようになります
複数の細分化されたテーブルで管理する理由は、「データの変更」に対応するためです
例えば「生徒の名前」が変わったときなど…
「すべてのテーブル情報を変える」のと「マスターの生徒名簿だけ変える」のとでは、作業の手間が段違いですよね
4種類のJOIN方法
SQLでは結合方法が4つもあります
2つのテーブルの情報を「どのように取ってくるか」によって使い分ける必要があります
ただし!この4種類の中からよく使うのは2種類!
- 2つの中から共通した情報だけを結合する「INNER JOIN」
- 片方のテーブルはそのままに、もう片方の情報があれば結合する「LEFT JOIN」
この2種類のJOINの違いは、「共通するデータを消すか・残すか」です
同じデータがない場合は、使わないから消してしまおうの「INNER JOIN」
もし追加のデータ(右側)があれば、データを結合してしまおうの「LEFT JOIN」
このスタンスです
「RIGHT JOIN」という結合方法がありますが、これは使わないようにしましょう
テーブルの位置を左右逆にすれば「LEFT JOIN」で事足りますし、左のテーブルに対し右側に情報を追加する方がイメージがしやすいためです
JOINの重要な要素「キー」とは?
「JOIN」を実施するには「キー」という概念を理解する必要があります
「キー」とは2つのテーブルの両方に存在する共通のデータです
とくにテーブル内で重複せず、必ず入っているキーを「プライマリーキー(主キー)」と呼びます
JOINではこの「キー」を明示する必要があります
上記の例ではIDをキーとして「LEFT JOIN」を実施しました
AとBの表に共通する「キー」=「 001 / 003 / 005 」 が結合されました
JOINのキー(ON句)ではIDを指定しましょう
「名前」などの名称でも指定できますが、同姓同名がいた場合や名前の形式が違う場合などがあるため、ずれにくい「数値型のID」を指定する癖をつけましょう
「佐藤 太郎」「佐藤太郎」などスペースの有り無しなど、システムでは別扱いになる場合があります
JOINの設定方法
SELECT
a.名前, a.点数, b.部活
FROM
テスト点数テーブル a
LEFT JOIN
生徒名簿 b
ON
a.名前 = b.名前
;
JOINの使い方は若干複雑です
「左側に来るテーブル」と「右側に来るテーブル」に名前を付けて、
抽出する項目を分ける必要があります
ステップに分けて説明します
FROM
テスト点数テーブル a ←左側に来るテーブル
FROM
テスト点数テーブル a
LEFT JOIN ←LEFT JOINを選択
FROM
テスト点数テーブル a
LEFT JOIN
生徒名簿 b ←右側に来るテーブル
※頭にテーブル名(a.b)を付ける
FROM
テスト点数テーブル a
LEFT JOIN
生徒名簿 b
ON a.名前 = b.名前 ←ON句でそれぞれのキーを指定
SELECT
a.名前, a.点数, b.部活 ←テーブル名を指定して、取り出したいカラムを指定
FROM
テスト点数テーブル a
LEFT JOIN
生徒名簿 b
ON a.名前 = b.名前
SELECT句を最後にご紹介していますが、慣れてくれば頭から書き始めてみましょう
またカラム名の頭にテーブル名を付けずに実行すると、エラーが発生します
テーブル名は「a.b」でも「x.y」でも何でもよいので、
どちらのテーブルから抽出したいのか、しっかり明示しましょう
まとめ
今回はJOINの基礎についてご紹介してきました
「INNER JOIN」と「LEFT JOIN」を使いこなせるようになってください