“製品”表と“在庫”表に対し、次のSQL文を実行した結果として得られる表の行数は幾つか。
SELECT DISTINCT 製品番号 FROM 製品
WHERE NOT EXISTS (SELECT 製品番号 FROM 在庫
WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号)
製品
┌────┬────────┬───┐
│製品番号│ 製品名 │ 単価 │
┝━━━━┿━━━━━━━━┿━━━┥
│ AB1805 │CD-ROMドライブ │15,000│
├────┼────────┼───┤
│ CC5001 │デジタルカメラ │65,000│
├────┼────────┼───┤
│ MZ1000 │プリンタA │54,000│
├────┼────────┼───┤
│ XZ3000 │プリンタB │78,000│
├────┼────────┼───┤
│ ZZ9900 │イメージスキャナ│98,000│
└────┴────────┴───┘
在庫
┌─────┬────┬───┐
│倉庫コード│製品番号│在庫数│
┝━━━━━┿━━━━┿━━━┥
│ WH100 │ AB1805 │ 20│
├─────┼────┼───┤
│ WH100 │ CC5001 │ 200│
├─────┼────┼───┤
│ WH100 │ ZZ9900 │ 130│
├─────┼────┼───┤
│ WH101 │ AB1805 │ 150│
├─────┼────┼───┤
│ WH101 │ XZ3000 │ 30│
├─────┼────┼───┤
│ WH102 │ XZ3000 │ 20│
├─────┼────┼───┤
│ WH102 │ ZZ9900 │ 10│
├─────┼────┼───┤
│ WH103 │ CC5001 │ 40│
└─────┴────┴───┘
ア 1 イ 2 ウ 3 エ 4
イ
DISTNCT は重複を削除するという意味の句である。
SQL文の意味は、以下のとおり。
SELECT DISTINCT 製品番号 FROM 製品
WHERE NOT EXISTS (SELECT 製品番号 FROM 在庫
WHERE 在庫数 > 30 AND 製品.製品番号 = 在庫.製品番号)
在庫数が30より多く、かつ、“製品”表の製品番号と“在庫”表の製品番号が同じ製品番号を“在庫”表から取り出しなさい。
この段階で、製品番号 CC5001, ZZ9000, AB1805, CC5001が取り出される。
さらに上記レコードに存在しないレコードを条件として
“製品”表から製品番号を重複なく取り出しなさい。
得られる結果は、MZ1000, XZ3000の2行である。
問28 | 目次 | 問30 |