JOINとは(全体像)
JOINとは、複数の表を、共通の項目でつなげて、ひとつの結果にするSQL機能のことだ。
2つの名簿でたとえると分かりやすい。社員番号という共通の項目で、「社員名簿」と「部署名簿」をつき合わせるようなものだ。これで、社員名と部署名を、まとめて取り出せる。
JOINには、いくつかの種類がある。
- 内部結合(INNER JOIN) … 両方の表で一致した行だけを取り出す
- 外部結合(OUTER JOIN) … 一方の表の全行を残し、一致しない部分は空(NULL)で補う(LEFT・RIGHT・FULLがある)
- CROSS JOIN … すべての組み合わせ
ここで一番のポイント。内部結合と外部結合は別ものだ。内部結合は一致した行だけ、外部結合は外側の行も残す。「内部結合と外部結合は同じ」と思い込むと誤りになる。
詳しく:ON句と、結合条件
ここが心臓部。ポイントを表で押さえよう。
JOINのポイント
| 項目 | やさしい意味 |
|---|---|
| JOIN | 複数の表を共通の項目でつなげる |
| 内部結合(INNER) | 両方で一致した行だけ |
| 外部結合(OUTER) | 一方の全行を残し、一致しない部分は空(NULL) |
| ON句 | どの項目でつなぐか、結合条件を指定する |
JOINを使うときは、ON句で「どの項目でつなぐか(結合条件)」を指定する。たとえば、「社員番号が同じ行をつなぐ」と指定する。
ここで一番のポイント。結合には、ON句で結合条件が必要だ(CROSS JOINを除く)。「JOINは、条件なしでつなげる」と思い込むと誤りで、ふつうは「どの項目でつなぐか」を指定する。
わかりやすく言い換えると
身近なたとえで整理しよう。
JOINは、「2つの名簿を、共通の番号でつき合わせること」のイメージ。
内部結合と外部結合の違いは、「内部結合は両方にある行だけ、外部結合は片方にしかない行も残す(空で補う)」こと。要するに、一致しない行を残すかどうか。
ON句は、「どの項目でつなぐか、という結合条件を指定するもの」こと。つまり、つなぐ目印を決める。
試験のツボ
🔴 一番出る:内部結合と外部結合
①内部結合(INNER)=両方で一致した行だけ
②外部結合(OUTER)=一方の全行を残し、一致しない部分は空(NULL)
🔴 次に出る:JOINの正体
①複数の表を、共通の項目でつなげるSQL機能
②2つの名簿を共通の番号でつき合わせるイメージ
🟡 押さえると安定:ON句
①ON句で、どの項目でつなぐか(結合条件)を指定する
②結合には条件が必要(CROSS JOINを除く)
よくある間違い
①「内部結合と外部結合は、まったく同じものだ」→ ✗ 内部結合は一致した行だけ、外部結合は外側の行も残す(空で補う)。役割が違う。
②「JOINは、条件なしで(ON句なしで)つなげる」→ ✗ ふつうはON句で結合条件を指定する(CROSS JOINを除く)。
③「JOINは、1つの表の中だけで使うものだ」→ ✗ JOINは、複数の表をつなげる機能。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(JOINの正体)
JOINに関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- 複数の表を、共通の項目を使ってつなげるSQL機能のことである
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 3 です。
JOINは、複数の表を、共通の項目でつなげるSQL機能なのです。2つの名簿を共通の番号でつき合わせるイメージなります。
選択肢1は給与計算、選択肢2は請求書の事務、選択肢4は広告で、どれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✗ | 請求書の事務の話 |
| 3 | ✓ | 複数の表を共通の項目でつなげるで正しい |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(内部結合と外部結合)
内部結合と外部結合の違いに関する次の記述のうち、最も適切なものはどれか。
- 内部結合は一致した行だけ、外部結合は外側の行も残すものである
- 社員の給与を計算するときだけ、違いが出るとされているものである
- 取引先への請求書の枚数しだいで、違いが決まるとされているのだ
- 内部結合も外部結合も、まったく同じものだとされているのである
解答は 1 です。
内部結合は一致した行だけ、外部結合は外側の行も残すのです。外部結合は、一致しない部分を空(NULL)で補うなります。
選択肢2の給与、選択肢3の請求書、選択肢4の「まったく同じ」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 内部=一致のみ・外部=外側も残すで正しい |
| 2 | ✗ | 給与計算で違いが出るのではない |
| 3 | ✗ | 請求書の枚数で決まるのではない |
| 4 | ✗ | 内部結合と外部結合は役割が違う |
オリジナル問題3(ON句)
JOINのON句に関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、必要だとされているものである
- どの項目でつなぐかという、結合のための条件を指定するものだ
- 取引先へ請求書を郵送するときだけ、必要だとされているのである
- ON句は、結合にはいっさい必要ないものだとされているのである
解答は 2 です。
ON句は、どの項目でつなぐか、結合条件を指定するものなのです。社員番号でつなぐ、などと指定するなります。
選択肢1の給与、選択肢3の請求書、選択肢4の「必要ない」は、いずれも違うのです。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のときだけではない |
| 2 | ✓ | 結合条件を指定するもので正しい |
| 3 | ✗ | 請求書のときだけではない |
| 4 | ✗ | 結合には条件が必要(CROSS以外) |
まとめ
押さえどころ
- 🔴 JOIN = 複数の表を、共通の項目でつなげる(結合する)SQL機能。
- 🔴 内部結合と外部結合 = 内部結合(INNER)は両方で一致した行だけ、外部結合(OUTER)は一方の全行を残し、一致しない部分は空(NULL)で補う。
- 🟡 ON句 = どの項目でつなぐか、結合条件を指定する(CROSS JOINを除き必要)。
次に学ぶ
- SELECT文(集約関数) ── データを取り出すSQL命令。JOINとあわせて、複数の表からデータを取り出す。
- 関係モデル(主キー・外部キー) ── 表どうしのつながり。外部キーが、JOINでつなぐ目印になる。
執筆: SikakuQuest編集部