LEFT JOINとRIGHT JOIN
︻例題1︼
売上表の顧客CDと顧客表の顧客CDで表を結合する。売上No | 日付 | 顧客CD |
---|---|---|
1 | 2001/05/27 | 101 |
2 | 2001/05/27 | 101 |
3 | 2001/05/27 | 103 |
4 | 2001/06/27 | 104 |
5 | 2001/06/27 | 104 |
顧客CD | 顧客名 |
---|---|
101 | 二島商店 |
102 | 姫路商事 |
103 | 大阪物産 |
104 | 神戸商店 |
105 | 福岡商事 |
SELECT文
SELECT *
FROM 売上表 INNER JOIN 顧客表 ON 売上表.顧客CD=顧客表.顧客CD
または
SELECT *
FROM 売上表,顧客表
WHERE 売上表.顧客CD=顧客表.顧客CD
売上No | 日付 | 売上表.顧客CD | 顧客表.顧客CD | 顧客名 |
---|---|---|---|---|
1 | 2001/05/27 | 101 | 101 | 二島商店 |
2 | 2001/05/27 | 101 | 101 | 二島商店 |
3 | 2001/05/27 | 103 | 103 | 大阪物産 |
4 | 2001/06/27 | 104 | 104 | 神戸商店 |
5 | 2001/06/27 | 104 | 104 | 神戸商店 |
内部結合
内部結合は、指定された両方の表に存在するものだけが抽出される
- 表の内部結合
- WHERE句で表の結合条件を指定する
- FROM句でINNER JOINで表の結合条件を指定する
顧客表のすべての行を表示させたいときには、外部結合であるLEFT JOINまたはRIGHT JOINを指定する。
LEFT JOINとRIGHT JOIN(外部結合)
LEFT JOINとRIGHT JOINは、左右いずれかの表を優先させたいときに指定する。
- LEFT JOIN
- 左側に指定された表のすべての行が表示される
- RIGHT JOIN
- 右側に指定された表のすべての行が表示される
LEFT JOINとRIGHTの記述形式は以下のとおりである。
LEFT JOIN記述形式
SELECT 列名1,列名2,〜列名n
FROM 表名1 LEFT JOIN表名2 ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件
RIGHT JOINの記述形式
SELECT 列名1,列名2,〜列名n
FROM 表名1 RIGHT JOIN表名2 ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件
【例題2】
顧客表と売上表を外部結合によって、顧客表のすべての行を表示させる。
売上No | 日付 | 顧客CD |
---|---|---|
1 | 2001/05/27 | 101 |
2 | 2001/05/27 | 101 |
3 | 2001/05/27 | 103 |
4 | 2001/06/27 | 104 |
5 | 2001/06/27 | 104 |
顧客CD | 顧客名 |
---|---|
101 | 二島商店 |
102 | 姫路商事 |
103 | 大阪物産 |
104 | 神戸商店 |
105 | 福岡商事 |
SELECT文
SELECT *
FROM 顧客表 LEFT JOIN 売上表 ON 顧客表.顧客CD=売上表.顧客CD
顧客名 | 顧客表.顧客CD | 売上表.顧客CD | 売上No | 日付 |
---|---|---|---|---|
二島商店 | 101 | 101 | 1 | 2001/05/27 |
二島商店 | 101 | 101 | 2 | 2001/05/27 |
姫路商事 | 102 | |||
大阪物産 | 103 | 103 | 3 | 2001/05/27 |
神戸商店 | 104 | 104 | 4 | 2001/06/27 |
神戸商店 | 104 | 104 | 5 | 2001/06/27 |
福岡商事 | 105 |
SELECT文の結合に関する関連ページ
- SQL講座 WHERE句で表を結合する
- WHERE句で表の結合を行う場合の記述方法の解説
- SQL講座 INNER JOINで表を結合する
- FROM句でINNER JOINを指定して表を結合する場合の記述方法の解説
- SQL講座 表の別名指定
- 同じ表を別な名前で指定して、表を自己結合する方法の解説