
【SQL】JOINの使い方とよくあるエラーを例文を用いて解説(練習問題あり)
JOINは複数のテーブルを結びつける際に使う関数です。
JOINをするには、同じ条件のカラムが両テーブルに存在していることが必要です。
JOINはSQLを勉強する上で、ぶつかる大きな壁の一つです。
そんなJOIN句を初心者でも理解しやすいよう、例題を用いて、徹底解説していきます。
JOINの基本構文
JOIN句は以下の構文を使うことで、テーブルを結びつけることができる。
SELECT
カラム
FROM
テーブル 1
JOIN
テーブル 2
ON
1.カラム = 2.カラム
FROMで指定したテーブルとJOINするテーブルを結びつける際、ONで同条件のカラムをイコール「=」で結びつけることで、JOINが完了される。

上の図をJOINしたい場合は、
SELECT
*
FROM
基本 a
JOIN
書籍情報 b
ON
a.書籍名 = b.書籍
とクエリーを書くことで以下の結果を抽出できる。

テーブル名の後の、aやbは、半角スペースを空けて文字列を指定している。
onで結びつける際の簡略化に用いるといい。
JOINには4種類あるが、今回はもっとも用いることが多いinner join のみを解説にしている。
他のJOINに関しては、参考文献を貼っておくため、ぜひ確認してもらいたい。

JOINの練習問題
練習問題を通じて、実践的にJOINの用法を理解していく。

練習問題1 : 「基本テーブルと、書籍情報テーブルをJOINして、『id,書籍名, 出版社,発行部数』を抽出しなさい」
まずは、JOINの用法を確認できる練習問題だ。
回答は以下である。
SELECT
id,
a.書籍名,
出版社,
発行部数
FROM
基本 a
JOIN
書籍情報 b
on
a.書籍名 = b.書籍
「a.書籍名」と指定することで、どのテーブルからどのカラムを抜き出すのかをサーバーへ明確に伝えることができる。
練習問題2 : 「基本テーブルと、書籍情報テーブルをJOINして、『発行部数5000以上の書籍数」を抜き出しなさい
次は過去に学んだ、count文や、where文を組み合わせた問題だ。
count文やwhere文はこちらから復習できる。
回答は以下である。
SELECT
count(id) as total
FROM
基本 a
JOIN
書籍情報 b
on
a.書籍名 = b.書籍
where
発行部数 >= 5000
結果は以下のように抽出される。

JOINでよくあるエラーと解消法
JOINでよく起こるエラーと、その解消法を解説していく。
ONを書き忘れる、ONで指定するカラムが揃っていないケース
JOINでは、基本的にonで同じ条件のカラムを指定しないと、結びつけることができない。

上のテーブル例で、
on
a.id = b.書籍名
と指定した場合、二つのカラムは違う内容が入っているために正しくJOIN
されない。
そのため、エラーが出た場合には、カラムが同じ内容のものか確認してもらいたい。
最後に自己紹介
はじめまして、ニューズピックス(https://newspicks.com/)でマーケターをしている平野佑樹です。
普段は、JobPicksというジョブ型キャリアを支援するWebサービス(https://job.newspicks.com/)を運営しており、
SQLやGoogle Analyticsを用いた分析
TwitterをはじめとしたSNS運用(ショート動画にも挑戦予定)
メールマガジン運用
Google Optimizeなどを用いたA/Bテスト
Search Consoleを用いてコンテンツSEOや開発に関わるSEO施策
など、幅広く業務を担当しています。
マーケターの業務を後押しするtipsをnoteにて発信しております。
(ぜひ、いいねや拡散お願いいたします🙇)
ぜひ、フォローや興味持っていただいた方は、(https://twitter.com/enterrocken)にDMいただけますと幸いです!