SQL LEFT JOINとRIGHT JOIN
2010/10/11
例)[表:品名]の[列:NO]と[表:売上]の[列:MONO]を連結。
| NO | NAME | PRICE |
|---|---|---|
| 01 | nam1 | 10000 |
| 02 | nam2 | 15000 |
| 03 | nam3 | 20000 |
| 04 | nam4 | 25000 |
| NO | DATE | MONO |
|---|---|---|
| 01 | 0911 | 01 |
| 02 | 0912 | 03 |
| 03 | 0913 | 01 |
| 04 | 0914 | 08 |
[表:品名]の[列:NO]と[表:売上]の[列:MONO]を連結
→完全一致(INNER JOIN)させる。
SELECT *
FROM [表:品名] INNER JOIN [表:売上] ON [表:品名].[列:NO] = [表:売上]の[列:MONO]
FROM [表:品名] INNER JOIN [表:売上] ON [表:品名].[列:NO] = [表:売上]の[列:MONO]
↓↓↓
| NO | NAME | PRICE | NO | DATE | MONO |
|---|---|---|---|---|---|
| 01 | nam1 | 10000 | 01 | 0911 | 01 |
| 01 | nam1 | 0000 | 03 | 0913 | 01 |
| 03 | nam3 | 20000 | 02 | 0912 | 03 |
※「[表:品名]の[列:NO]」=「[表:売上]の[列:MONO]」になるものをすべて抽出
[表:品名]の[列:NO]をすべて表示させて、[表:売上]の[列:MONO]を連結
→左側の表を優先(LEFT JOIN)させる
SELECT *
FROM [表:品名] LEFT JOIN [表:売上] ON [表:品名].[列:NO] = [表:売上]の[列:MONO]
FROM [表:品名] LEFT JOIN [表:売上] ON [表:品名].[列:NO] = [表:売上]の[列:MONO]
↓↓↓
| NO | NAME | PRICE | NO | DATE | MONO |
|---|---|---|---|---|---|
| 01 | nam1 | 10000 | 01 | 0911 | 01 |
| 01 | nam1 | 10000 | 03 | 0913 | 01 |
| 02 | nam2 | 15000 | |||
| 03 | nam3 | 20000 | 02 | 0912 | 03 |
| 04 | nam4 | 25000 |
※(RIGHT JOIN)は(LEFT JOIN)の逆
LEFT JOINとかのまとめ。
- A INNER JOIN B
- AとBが完全一致するものだけ表示
- A LEFT JOIN B
- Aをすべて表示して、Aと一致するBも表示
- A RIGHT JOIN B
- Bをすべて表示して、Bと一致するAも表示