サブクエリーの抽出結果が複数になる場合
サブクエリーの抽出結果が複数になる場合は、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話紹介します。