11IT

ITWebIT1IT

IT調IT調便
 

LEFT JOINRIGHT JOIN


WHEREINNER JOINLEFT JOINRIGHT JOIN

1
1

CDCD
売上表
売上No日付顧客CD
12001/05/27101
22001/05/27101
32001/05/27103
42001/06/27104
52001/06/27104
顧客表
顧客CD顧客名
101二島商店
102姫路商事
103大阪物産
104神戸商店
105福岡商事
SELECT文

SELECT *
FROM 売上表 INNER JOIN 顧客表 ON 売上表.顧客CD=顧客表.顧客CD

または

SELECT *
FROM 売上表,顧客表
WHERE 売上表.顧客CD=顧客表.顧客CD

実行結果
売上No日付売上表.顧客CD顧客表.顧客CD顧客名
12001/05/27101101二島商店
22001/05/27101101二島商店
32001/05/27103103大阪物産
42001/06/27104104神戸商店
52001/06/27104104神戸商店

CD102105

WHEREINNER JOIN
内部結合

内部結合は、指定された両方の表に存在するものだけが抽出される

表の内部結合
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 抽出条件


LEFT JOIN1RIGHT JOIN2LEFT JOINRIGHT JOIN使
【例題2】

顧客表と売上表を外部結合によって、顧客表のすべての行を表示させる。

売上表
売上No日付顧客CD
12001/05/27101
22001/05/27101
32001/05/27103
42001/06/27104
52001/06/27104
顧客表
顧客CD顧客名
101二島商店
102姫路商事
103大阪物産
104神戸商店
105福岡商事
SELECT文

SELECT *
FROM 顧客表 LEFT JOIN 売上表 ON 顧客表.顧客CD=売上表.顧客CD

実行結果
顧客名顧客表.顧客CD売上表.顧客CD売上No日付
二島商店10110112001/05/27
二島商店10110122001/05/27
姫路商事102
大阪物産10310332001/05/27
神戸商店10410442001/06/27
神戸商店10410452001/06/27
福岡商事105

LEFT JOINNULL()NULLNULL

SQL