初詣合格祈願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に戻る

  

正月のおせち料理に使われる食材について使われるいわれや意味を解説します。