表の結合と副問い合わせを組み合わせた抽出

表の結合と副問い合わせを組み合わせることで、より高度な抽出が行える。

《例題》

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

商品表と売上明細表
SELECT文

SELECT 売上No,単価,数量,単価*数量
FROM 商品表,売上明細
WHERE 商品表.商品CD=売上明細.商品CD←商品表と売上明細の結合
AND 単価>=(SELECT AVG(単価) FROM 商品表)

− 実行結果 −

実行結果

スポンサードリンク

例題SELECT文の実行順序は次のとおりである。
1.FROM句で記述されている「商品表」と「売上明細」を読み込む
2.WHERE句で指定されているカッコ内のSQLの実行をおこなう

実行結果

3.WHERE句で記述された「商品表.商品CD=売上明細.商品CD」表の結合をおこなう。

実行結果

4.単価>=213.333333333333の行を抽出する。この副問い合わせは、以下のSELECT文を実行したものと同じである。
SELECT 売上No,単価,数量,単価*数量
FROM 商品表,売上明細
WHERE 商品表.商品CD=売上明細.商品CD AND 単価>=213.333333333333

Point

副問い合わせが使われているSELECT文は、先に()内のSELECT文の実行結果を求め、その抽出結果を基に主問い合わせの実行結果を求める。