結合について
結合は基本的に 2 つのテーブルを使用しますが、3 つ以上のテーブルを同時に結合することも可能です。結合できるテーブルの数に制限はありません。
構文としては、FROM 句の後ろに JOIN 句、ON 句のセットを結合するテーブルの分だけ記述していくことで、3 つ目以降のテーブルを結合できます。
テーブルを結合することで複数のテーブルからデータを参照することができます。最も頻繁に使用する結合は等価結合(または内部結合といいます)です。等価結合とは指定した列について同じデータを持つレコード同士を結びつける結合です。指定した列のデータがどちらかにしかないレコードは抽出されません。テーブルを等価結合するにはJOIN句を使用します。
JOIN ... ON (INNER JOIN)
結びつかないと表示されないです。結びついたパターンは全て表示。
JOIN句を使用してテーブルを等価結合するには以下のようにSQLを書きます。なお,INNERは省略することができます。
SELECT 列名1, 列名2, ...
FROM テーブル名1 [INNER] JOIN テーブル名2
ON テーブル名1.列名 = テーブル名2.列名
[WHERE 条件式など]
JOIN句で結合するテーブルを指定し,どの列をキーにして結合するかをON句で指定します。また,等価結合は以下のように書くこともできます。
SELECT 列名1, 列名2, ...
FROM テーブル名1, テーブル名2
WHERE テーブル名1.列名 = テーブル名2.列名
SQLサンプル
例として売上伝票と商品マスタを商品コードをキーにして結合します。
売上明細
伝票番号 | 商品コード |
---|---|
01-101 | A001 |
01-102 | A002 |
01-103 | B002 |
01-104 | D001 |
商品
商品コード | 商品名 |
---|---|
A001 | 冷蔵庫 |
A002 | 洗濯機 |
B001 | エアコン |
B002 | 空気清浄機 |
C001 | 液晶テレビ |
SELECT 売上明細.伝票番号, 商品.商品コード, 商品.商品名
FROM 商品 JOIN 売上明細
ON 商品.商品コード = 売上明細.商品コード
結果
伝票番号 | 商品コード | 商品名 |
---|---|---|
01-101 | A001 | 冷蔵庫 |
01-102 | A002 | 洗濯機 |
01-103 | B002 | 空気清浄機 |