初詣合格祈願SQL講座

SQL講座 複数の表の連携7

目指せ!SQL

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

表の結合とサブクエリーを組み合わせて検索

表の結合とサブクエリーを組み合わせることで、より高度な検索をおこなえます。

<例題>
商品表と売上明細から、商品表の単価の平均以上の行の売上No、単価、数量と売上金額を表示する。売上金額は単価*数量で計算する

商品表(主キー:商品コード)
商品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 売上No,単価,数量,単価*数量
FROM 商品表,売上明細
WHERE 商品表.商品CD=売上明細.商品CD ← 商品表の商品CDと売上明細の商品CDが一致する行を結合
AND 単価>=(SELECT AVG(単価) ← 単価の平均を計算
FROM 商品表)

実行結果
売上No単価数量
125071750
325082000
3700128400

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

  1. FROM句で記述されている「商品表」と「売上明細」を読み込む
  2. WHERE句で指定されているカッコ内のSQLの実行をおこなう
    (SELECT AVG(単価) FROM 商品表)   →  213.333333333333
  3. WHERE句で記述された「商品表.商品CD=売上明細.商品CD」商品表の商品CDと売上明細の商品CDが一致する行を抽出
    売上No単価数量
    13010300
    125071750
    1100252500
    25015750
    21503450
    325082000
    3150304500
    3700128400
    3100505000
    4509450
    4150213150
    53017510
    5505250
  4. 単価>=213.333333333333の行を抽出する



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