SQL Server テーブルとテーブルを結合

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 Server2016の教科書SQL文を分かりやすく解説している教材で、SQL文初心者におすすめの教材です。

>> この教材を楽天市場で見る <<

コメントを残す