サブクエリーの抽出結果が複数になる場合
サブクエリーの抽出結果が複数になる場合は、IN演算子を使用します。
<例題>
売上表の日付が"2001/06/27"の行を抽出し、商品表と売上明細から売上No、商品名、単価、数量と売上金額を表示する。なお、売上金額は単価*数量で計算する。
| 商品CD | 商品名 | 単価 | 
|---|---|---|
| 10 | 鉛筆 | 30 | 
| 20 | 消しゴム | 50 | 
| 30 | シャープペン | 250 | 
| 40 | ボールペン | 150 | 
| 50 | 色鉛筆 | 700 | 
| 60 | ノート | 100 | 
| 売上No | 日付 | 顧客CD | 
|---|---|---|
| 1 | 2001/05/27 | 105 | 
| 2 | 2001/05/27 | 101 | 
| 3 | 2001/05/27 | 103 | 
| 4 | 2001/06/27 | 102 | 
| 5 | 2001/06/27 | 104 | 
| 売上No | 連番 | 商品CD | 数量 | 
|---|---|---|---|
| 1 | 1 | 10 | 10 | 
| 1 | 2 | 30 | 7 | 
| 1 | 3 | 60 | 25 | 
| 2 | 1 | 20 | 15 | 
| 2 | 2 | 40 | 3 | 
| 3 | 1 | 30 | 8 | 
| 3 | 2 | 40 | 30 | 
| 3 | 3 | 50 | 12 | 
| 3 | 4 | 60 | 50 | 
| 4 | 1 | 20 | 21 | 
| 4 | 2 | 40 | 21 | 
| 5 | 1 | 10 | 17 | 
| 5 | 2 | 20 | 5 | 
| 顧客CD | 顧客名 | 
|---|---|
| 101 | 二島商店 | 
| 102 | 姫路商事 | 
| 103 | 大阪物産 | 
| 104 | 神戸商店 | 
| 105 | 福岡商事 | 
SELECT 売上No,商品名,単価,数量,単価*数量
FROM 商品表,売上明細
WHERE 商品表.商品CD=売上明細.商品CD ← 商品表の商品CDと売上明細の商品CDが一致する行を結合
    AND 売上No IN(SELECT 売上No
                    FROM 売上表
                    WHERE 日付="2001/06/27") 
| 売上No | 商品名 | 単価 | 数量 | |
|---|---|---|---|---|
| 4 | 消しゴム | 50 | 9 | 450 | 
| 4 | ボールペン | 150 | 21 | 3150 | 
| 5 | 鉛筆 | 30 | 17 | 510 | 
| 5 | 消しゴム | 50 | 5 | 250 | 
例題SELECT文の実行順序は次のとおりです。
| 売上No | 商品名 | 単価 | 数量 | |
|---|---|---|---|---|
| 1 | 鉛筆 | 30 | 10 | 300 | 
| 1 | シャープペン | 250 | 7 | 1750 | 
| 1 | ノート | 100 | 25 | 2500 | 
| 2 | 消しゴム | 50 | 15 | 750 | 
| 2 | ボールペン | 150 | 3 | 450 | 
| 3 | シャープペン | 250 | 8 | 2000 | 
| 3 | ボールペン | 150 | 30 | 4500 | 
| 3 | 色鉛筆 | 700 | 12 | 8400 | 
| 3 | ノート | 100 | 50 | 5000 | 
| 4 | 消しゴム | 50 | 9 | 450 | 
| 4 | ボールペン | 150 | 21 | 3150 | 
| 5 | 鉛筆 | 30 | 17 | 510 | 
| 5 | 消しゴム | 50 | 5 | 250 | 
初詣、お正月に関する逸話、昔話を10話紹介します。