初詣合格祈願SQL講座

SQL講座 複数の表の連携10

目指せ!SQL

初詣合格祈願SQL講座 複数の表の連携10

INNER JOINを使って表を結合する

複数の表を結合するときにWHERE句で結合条件を指定する他にINNER JOINを使って表を結合することができます。

記述形式 SELECT 列名1,列名2 ・・・表示させたい列名
FROM 表名1 INNER JOIN 表名2 ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件 ・・・抽出条件

<例題>
売上表の顧客CDと顧客表の顧客CDが一致する行を表示させる。

商品表(主キー:商品コード)
商品CD商品名単価
10鉛筆30
20消しゴム50
30シャープペン250
40ボールペン150
50色鉛筆700
60ノート100

売上表
売上No日付顧客CD
12001/05/27105
22001/05/27101
32001/05/27103
42001/06/27102
52001/06/27104

売上明細(主キー:売上No,連番)
売上No連番商品CD数量
111010
12307
136025
212015
22403
31308
324030
335012
346050
412021
424021
511017
52205

顧客表(主キー:顧客CD)
顧客CD顧客名
101二島商店
102姫路商事
103大阪物産
104神戸商店
105福岡商事

SELECT * ← すべての列
FROM 売上表 INNER JOIN 顧客表 ON 売上表.顧客CD=顧客表.顧客CD
↑ 売上表の顧客CDと顧客表の顧客CDが一致する行を結合

INNER JOINを使って表を結合

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

売上表の顧客CDと顧客表の顧客CDが一致した行を結合

また、3つ以上の表を結合する場合は、カッコでくくって記述します。カッコ内のINNER JOINを1つのテーブルとみなして結合します。
<例題>
売上表の日付、商品表の商品名と単価、売上明細の数量を表示させる

SELECT 日付,商品名, 単価, 数量 ← 表示させる列
FROM 商品表 INNER JOIN (売上表 INNER JOIN 売上明細 ON 売上表.売上No = 売上明細.売上No) ON 商品表.商品CD = 売上明細.商品CD;
↑商品表の商品CDと売上明細の商品CDと売上表の売上Noと売上明細の売上Noが一致する行を結合

実行結果
日付商品名単価数量
2001/05/27鉛筆3010
2001/05/27シャープペン2507
2001/05/27ノート10025
2001/05/27消しゴム5015
2001/05/27ボールペン1503
2001/05/27シャープペン2508
2001/05/27ボールペン15030
2001/05/27色鉛筆70012
2001/05/27ノート10050
2001/06/27消しゴム509
2001/06/27ボールペン15021
2001/06/27鉛筆3017
2001/06/27消しゴム505

商品表の商品CDと売上明細の商品CDと売上表の売上Noと売上明細の売上Noが一致した行が結合されている

例題のSQL文動作は次のとおりです。

  1. 売上表と売上明細より売上Noで一致する行を結合する
  2. 1.で抽出した表と商品表の商品CDが一致する行を結合する



初詣合格祈願SQL講座ページTOPに戻る