"製品"表と"在庫"表に対して, 次のSQL文を実行した場合, 実行結果として得
られる表の行数は幾つか。

  SELECT 製品番号 FORM 製品
      WHERE NOT EXISTS( SELECT 製品番号 FROM 在庫
                   WHERE 製品番号 = 製品.製品番号 AND 在庫数 > 30 )

製品                  在庫
┌────┬────────┬───┐ ┌─────┬────┬───┐
│製品番号│  製品名   │ 単価 │ │倉庫コード│製品番号│在庫数│
┝━━━━┿━━━━━━━━┿━━━┥ ┝━━━━━┿━━━━┿━━━┥
│ AB1805 │CD-ROMドライブ │15,000│ │ WH100  │ AB1805 │  20 │
├────┼────────┼───┤ ├─────┼────┼───┤
│ CC5001 │ディジタルカメラ│65,000│ │ WH100  │ CC5001 │ 200 │
├────┼────────┼───┤ ├─────┼────┼───┤
│ MZ1000 │プリンタ A   │54,000│ │ WH100  │ ZZ9900 │ 130 │
├────┼────────┼───┤ ├─────┼────┼───┤
│ XZ3000 │プリンタ B   │78,000│ │ WH101  │ AB1805 │ 150 │
├────┼────────┼───┤ ├─────┼────┼───┤
│ ZZ9900 │イメージスキャナ│98,000│ │ WH101  │ XZ3000 │  30 │
└────┴────────┴───┘ ├─────┼────┼───┤
                    │ WH102  │ XZ3000 │  20 │
                    ├─────┼────┼───┤
                    │ WH102  │ ZZ9900 │  10 │
                    ├─────┼────┼───┤
                    │ WH103  │ CC5001 │  40 │
                    └─────┴────┴───┘

 ア 1

 イ 2

 ウ 3

 エ 4

■キーワード■ 副問合せ(SQL)

■解答■
  テクニカルエンジニア(データベース)午前平成14年問31

 イ 2

> 主問い合わせで選択された製品番号が,副問い合わせの条件を満たしていない
> 場合のみ,その製品番号を選択する
> 製品番号 AB1805:"在庫"表に在庫数が 30 より多いレコードがあるので
> 選択しない
> 製品番号 CC5001:"在庫"表に在庫数が 30 より多いレコードがあるので
> 選択しない
> 製品番号 MZ1000:"在庫"表に製品番号がないので選択する
> 製品番号 XZ3000:"在庫"表に在庫数が 30 より多いレコードがないので
> 選択する
> 製品番号 ZZ9900:"在庫"表に在庫数が 30 より多いレコードがあるので
> 選択しない
> 結果は,製品番号が MZ1000(プリンタ A),XZ3000(プリンタ B)の 2 行

 どうもありがとうございました。

> 「製品」表      「在庫」表
>  製品番号:AB1805 → 在庫数: 20・150
>  製品番号:CC5001 → 在庫数:200・ 40
>  製品番号:MZ1000 → 在庫数:該当なし
>  製品番号:XZ3000 → 在庫数: 30・ 20
>  製品番号:ZZ9900 → 在庫数:130・ 10
>
> "在庫数 > 30 "の条件で選択される製品番号はAB1805、CC5001、ZZ9900
> "NOT EXISTS"条件なので上記以外の製品番号MZ1000、XZ3000の2行が選択される。

 どうもありがとうございました。

                                                                                                                                              • -