|
テーブルの結合(INNER JOIN)
SELECT文により複数のテーブルを結合してデータを取得するには、通常JOIN句を利用します。
JOIN句にはINNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, CROSSなどがありますが、
ここではINNER JOIN(内部結合ともいいます)について記述します。
INNER JOIN は、両テーブルの結合条件に一致するデータが存在するもののみ取得します。
なお、INNER JOINはWHERE句を利用して記述することもできます。
文法:SELECT <テーブル名1>.<列名1>, <テーブル名2>.<列名2>…
FROM <テーブル名1>
INNER JOIN <テーブル名2>
ON <結合条件>
WHERE <抽出条件>
|
***例(2表を結合する)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
01 |
001 |
テスト一郎 |
01 |
002 |
テスト二郎 |
02 |
001 |
テスト三郎 |
03 |
001 |
テスト四郎 |
|
[所属マスタ]
所属コード |
所属名 |
01 |
営業部 |
02 |
企画部 |
04 |
販促部 |
|
[実行SQL]
※下記ではテーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
shain.所属コード,
shozoku.所属名,
shain.社員コード,
shain.氏名
FROM
社員マスタ shain
INNER JOIN 所属マスタ shozoku
ON shain.所属コード = shozoku.所属コード
|
*上記はWHERE句を利用すると以下のように書くこともできます
SELECT
shain.所属コード,
shozoku.所属名,
shain.社員コード,
shain.氏名
FROM
社員マスタ shain, 所属マスタ shozoku
WHERE
shain.所属コード = shozoku.所属コード
|
[結果]
所属コード |
所属名 |
社員コード |
氏名 |
01 |
営業部 |
001 |
テスト一郎 |
01 |
営業部 |
002 |
テスト二郎 |
02 |
企画部 |
001 |
テスト三郎 |
※[所属マスタ]に所属コード'03'のデータが存在しないため、
[社員マスタ]の所属コード'03'のデータは取得されない。
***例(3表を結合する)***
[社員マスタ]
所属コード |
社員コード |
氏名 |
出身県コード |
01 |
001 |
テスト一郎 |
01 |
01 |
002 |
テスト二郎 |
03 |
02 |
001 |
テスト三郎 |
02 |
03 |
001 |
テスト四郎 |
01 |
|
[所属マスタ]
所属コード |
所属名 |
01 |
営業部 |
02 |
企画部 |
04 |
販促部 |
[県マスタ]
県コード |
県名 |
01 |
東京都 |
02 |
千葉県 |
03 |
神奈川県 |
|
[実行SQL]
※下記ではテーブル名に別名を付けています。別名については「別名を付ける」を参照してください。
SELECT
shozoku.所属名,
shain.社員コード,
shain.氏名,
ken.県名 AS 出身県
FROM
(社員マスタ shain
INNER JOIN 所属マスタ shozoku
ON shain.所属コード = shozoku.所属コード
) INNER JOIN 県マスタ ken
ON shain.出身県コード = ken.県コード
|
[結果]
所属名 |
社員コード |
氏名 |
出身県 |
営業部 |
001 |
テスト一郎 |
東京都 |
営業部 |
002 |
テスト二郎 |
神奈川県 |
企画部 |
001 |
テスト三郎 |
千葉県 |
※[所属マスタ]に所属コード'03'のデータが存在しないため、
[社員マスタ]の所属コード'03'のデータは取得されない。
|
<<PR>>
価格:300円
価格:300円
|