初詣合格祈願SQL講座

SQL講座 複数の表の連携6

目指せ!SQL

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

抽出結果を元にさらに抽出をおこなう

SELECT文の中にさらにSELECT文を記述することができます。SELECT文で抽出したデータを抽出条件とするということです。

記述形式 SELECT 列名1,列名2,〜列名n ← 表示させたい列
FROM 表名1,表名2,〜表名n ← 抽出対象となる表
WHERE 列名 演算子 ← サブクエリーの抽出結果を元に抽出する条件
 (抽出結果が複数になるときは演算子にINなどを指定する)
↓サブクエリ
(SELECT 列名 ← 外側のSELECT文のWHERE句で指定された条件の値を持つ列
FROM 表名 ← 抽出の対象となる表
WHERE 抽出条件) ← 抽出条件
↑サブクエリ
二つのSELECT文の実行順序はカッコに記述されているSELECT文から実行されます。このカッコ内に記述されたSELECT文のことをサブクエリー(副問合せ)と呼びます。

<例題>
売上表から売上Noが1の顧客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 顧客表
WHERE 顧客CD=
(SELECT 顧客CD
FROM 売上表
WHERE 売上No=1)

実行結果
顧客名
福岡商事

例題SELECT文の実行順序は次のとおりです。

  1. FROM句で記述されている「顧客表」を読み込む
  2. WHERE句で指定されているカッコ内のSQLの実行をおこなう
    (SELECT 顧客CD
    FROM 売上表    ⇒ 顧客CD 105
    WHERE 売上No=1)
  3. WHERE句で指定した条件「WHERE 顧客CD= 105」で行を抽出する。



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