2つ以上のテーブルを特定のルールで結合して1つのテーブルのようにします。
結合の種類には「INNER JOIN」、「LEFT JOIN」、「RIGHT JOIN」等ありますが、使い分けるとデバックがややこしくなるので、ルールを設けて使用することをお勧めします。
私は「LEFT JOIN」だけを使用しています。
よって、ここでは「LEFT JOIN」を使用した例を説明します。
LEFT JOINとはSQL文で左方に記述したテーブルをメインテーブルとして扱う結合方法です。
左方結合とも言い、双方のテーブルの結合が成立しなくても、メインテーブルの内容は取得する方法です。
すなわち、サブテーブルに結合対象が存在しない場合は、メインテーブルは取得できて、サブテーブルの内容は「NULL」として取得できます。
1対1の結合
SELECT テーブル1.列1, テーブル1.列2 FROM テーブル1 LEFT JOIN テーブル2 ON テーブル2.列1 = テーブル1.列1
メインテーブルを「テーブル1」として「テーブル2」を結合します。
「テーブル1」の「列1」と「テーブル2」の「列1」が一致する行(レコード)を結合します。
抽出条件付き1対1の結合
SELECT テーブル1.列1, テーブル1.列2 FROM テーブル1 LEFT JOIN テーブル2 ON テーブル2.列1 = テーブル1.列1 WHERE テーブル1.列1 = 100
メインテーブルを「テーブル1」として「テーブル2」を結合しますが、メインテーブルは「列1」が「100」の行(レコード)を抽出してから結合します。
「テーブル1」の「列1」と「テーブル2」の「列1」が一致する行(レコード)を結合します。
1対2以上の接続
「FROM句」に「JOIN句」は1つしか使用できないので、「(」(カッコ)でネストすることで「JOIN句」を複数使用することが可能になります。
SELECT テーブル1.列1, テーブル1.列2 FROM ( テーブル1 LEFT JOIN テーブル2 ON テーブル2.列1 = テーブル1.列1 ) LEFT JOIN テーブル3 ON テーブル3.列1 = テーブル1.列1 WHERE テーブル1.列1 = 100
SELECT テーブル1.列1, テーブル1.列2 FROM ( ( テーブル1 LEFT JOIN テーブル2 ON テーブル2.列1 = テーブル1.列1 ) LEFT JOIN テーブル3 ON テーブル3.列1 = テーブル1.列1 ) LEFT JOIN テーブル4 ON テーブル4.列2 = テーブル1.列2 WHERE テーブル1.列1 = 100
SQL学習におすすめの教材
SQL文を分かりやすく解説している教材で、SQL文初心者におすすめの教材です。
コメントを残す