副問い合わせの結果が複数になる場合

副問い合わせの抽出結果が複数になる場合は、IN述語を使用する。

《例題》

売上表の日付が"2001/06/27"の行を抽出し、商品表と売上明細から売上No、商品名、単価、数量と売上金額を表示する。なお、売上金額は単価*数量で計算する。

商品表、売上明細表と商品表
SELECT文

SELECT 売上No,商品名,単価,数量,単価*数量
FROM 商品表,売上明細
WHERE 商品表.商品CD=売上明細.商品CD AND
売上No IN(SELECT 売上No FROM 売上表 WHERE 日付="2001/06/27")

− 実行結果 −

実行結果

スポンサードリンク

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

実行結果

SELECT 売上No FROM 売上表 WHERE 日付="2001/06/27"の実行結果

3.WHERE句で記述された「商品表.商品CD=売上明細.商品CD」商品表の商品CDと売上明細の商品CDが一致する行を抽出する。すなわち表の結合をおこなう。

実行結果

4.副問い合わせで抽出された「売上No」が4と5の行を抽出する。このSELECT文は次のSELECT文と同じ意味である。

SELECT 売上No,商品名,単価,数量,単価*数量
FROM 商品表,売上明細
WHERE 商品表.商品CD=売上明細.商品CD AND 売上No IN(4,5)

実行結果