副問い合わせの結果が複数になる場合
副問い合わせの抽出結果が複数になる場合は、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)