テーブルを結合するJOIN句とは?
2つ以上のテーブルを特定のルールで結合して1つのテーブルのようにすることです
結合には「INNER JOIN」、「LEFT JOIN」、「RIGHT JOIN」
等と様々ありますが、都度、使い分けるとデバックがややこしくなるので、私は極力「LEFT JOIN」を使うようにしています
2つ以上のテーブルを特定のルールで結合して1つのテーブルのようにすることです
結合には「INNER JOIN」、「LEFT JOIN」、「RIGHT JOIN」
等と様々ありますが、都度、使い分けるとデバックがややこしくなるので、私は極力「LEFT JOIN」を使うようにしています
「LEFT JOIN」とは?
左外部結合と言い、左側に書いたメインテーブルに結合する外部結合します
左側のメインテーブルに存在する行は右側のテーブルに同じキーの行が無くても全て取得されますが、右側のテーブルだけにしか存在しない行は取得されません
「テーブルA」をメインテーブルとして「得意先区分」をキーにして「テーブルB」を左外部結合します
このようになります
左外部結合と言い、左側に書いたメインテーブルに結合する外部結合します
左側のメインテーブルに存在する行は右側のテーブルに同じキーの行が無くても全て取得されますが、右側のテーブルだけにしか存在しない行は取得されません
テーブルA | テーブルB | ||||
得意先コード | 得意先名 | 得意先区分 | 区分 | 名称 | |
1 | 鈴木商事 | 1 | 1 | 法人 | |
2 | 佐藤 一郎 | 2 | 2 | 個人事業 | |
3 | 鈴木 二郎 | 3 |
「テーブルA」をメインテーブルとして「得意先区分」をキーにして「テーブルB」を左外部結合します
このようになります
得意先コード | 得意先名 | 得意先区分 | 名称 |
1 | 鈴木商事 | 1 | 法人 |
2 | 佐藤 一郎 | 2 | 個人事業 |
3 | 鈴木 二郎 | 3 | Null |
左外部結合するSQL文
「テーブルA」をメインテーブルとしてテーブルAの「列1」とテーブルBの「列1」をキーに「テーブルB」を左外部結合するSQL文です
「テーブルA」をメインテーブルとしてテーブルAの「列1」とテーブルBの「列1」をキーに「テーブルB」を左外部結合するSQL文です
SELECT テーブルA.列1, テーブルA.列2, テーブルA.列3, テーブルB.列1, テーブルB.列2 FROM テーブルA LEFT JOIN テーブルB ON テーブルB.列1 = テーブルA.列1
2つ以上のテーブルを結合する
「FROM」句に「JOIN」は1つしか記述できないので2つ以上のテーブルを結合するには「(」カッコでネストすることで可能になります
「FROM」句に「JOIN」は1つしか記述できないので2つ以上のテーブルを結合するには「(」カッコでネストすることで可能になります
SELECT テーブルA.列1, テーブルA.列2, テーブルA.列3, テーブルB.列1, テーブルB.列2, テーブルC.列1, テーブルC.列2 FROM ( テーブルA LEFT JOIN テーブルB ON テーブルB.列1 = テーブルA.列1 ) LEFT JOIN テーブルC ON テーブルC.列1 = テーブルA.列1