JOIN結合の種類
INNER JOIN(内部結合)
指定した条件が結合する両方のテーブルにマッチするレコードのみを返します。
Cの部分です。
LEFT or RIGHT JOIN(外部結合)
ここではLEFT JOINで説明します。
結合の左側のテーブルの全レコードとで指定した条件がマッチする右側のレコードを返します。
FULL JOIN(外部結合)
指定した条件がマッチするレコードとマッチしない両方のテーブルのレコードも返します。
CROSS JOIN(クロス結合)
左右両方の各テーブルの全ての組み合わせパターンを返します。
分かりにくく、使用することが非常に少ないので説明は省きます。
どの結合方法を使う?
用途によって結合方法を選んで使用するのが便利かもしれませんが、色んな種類の結合を使用するとデバッグ等で苦労します。
また、コードの再利用も面倒くさいので私は特別な理由がない限り、LEFT JOINしか使いません。
これだけで殆どの仕様をカバーできます。
LEFT JOINの使い方
テーブルを容易
テーブルA
A列1 | A列2 | A列3 | A列4 | A列5 |
テーブルB
B列1 | B列2 | B列3 | B列4 | B列5 |
テーブルAとテーブルBの2つのテーブルを用意しました。
夫々、列が5つ存在します。
LEFT JOINを使ったSQL文
SELECT A列1, A列2, A列3, B列1, B列2, B列3 FROM テーブルA LEFT JOIN テーブルB ON A列1 = B列1
テーブルAをメインテーブルとしてテーブルBを接続します。
A列1とB列1が一致するテーブルBが接続されます。
テーブルBに一致するレコードが存在しなくても、テーブルAの内容は表示されますがテーブルBの内容はNULLで表示されます。
1:1のテーブル結合でしたが、1:複数の場合もついでに紹介します。
1:複数のLEFT JOIN
SELECT A列1, A列2, A列3, B列1, B列2, B列3, C列1, C列2, C列3, FROM ( テーブルA LEFT JOIN テーブルB ON A列1 = B列1 ) LEFT JOIN テーブルC ON A列2 = C列3
このように”(“カッコを使用してネストします。
この場合もメインテーブルはテーブルAでテーブルBとテーブルCを結合します。
コメント