データベーススペシャリスト 平成22年春期 午前U 問14

午前U 問14

"製品"表と"在庫"表に対し,次のSQL文を実行した結果として得られる表の行数は幾つか。
14.gif/image-size:486×291
  • [この問題の出題歴]
  • データベース H17春期 問36

分類

テクノロジ系 » データベース » データ操作

正解

解説

EXISTS句を使用した相関副問い合わせでは主問い合わせの表の1行ごとに副問い合わせが実行されます。設問の製品表には5行が存在するので、副問合せも5回行われることになります。

[1行目(製品番号:AB1805)]
副問合せでは製品番号を結合キーとして製品表と在庫表を結合し、製品番号がAZ1805かつ在庫数が30より多い行を抽出されます。このため副問合せからは以下の実行結果が返されます。
14_1.gif/image-size:416×439
NOT EXISTS句は存在しない場合に真を返す比較演算子なので、主問合せのWHERE句は1行目に対して偽を返します。

[2行目(製品番号:CC5001)]
1行目と同様に副問合せで製品番号がCC5001かつ在庫数が30より多い行を抽出しているため、副問合せからは以下の表が返されます。
14_2.gif/image-size:304×54
結果が存在するためWHERE句は2行目に対して偽を返します。

[3行目(製品番号:MZ1000)]
副問合せで製品番号がMZ1000かつ在庫数が30より多い行が抽出されます。しかし、在庫表には製品番号MZ1000の行は存在しないため副問合せの結果はNULLになります。したがってWHERE句は3行目に対してを返します。

[4行目(製品番号:XZ3000)]
副問合せで製品番号がXZ3000かつ在庫数が30より多い行が抽出されます。在庫表には製品番号XZ3000の行が2つありますが、どちらも在庫が30以下のため副問合せの結果はNULLになります。したがってWHERE句は4行目に対してを返します。
14_3.gif/image-size:384×154

[5行目(製品番号:ZZ9900)]
副問合せで製品番号がZZ9900かつ在庫数が30より多い行が抽出されます。
14_4.gif/image-size:304×51
結果が存在するためWHERE句は5行目に対して偽を返します。

したがってSQL文の結果は製品ひょうのうち条件に合致した2行(製品番号:MZ1000,XZ3000)の製品番号列を抜き出した以下の表となります。
14_5.gif/image-size:392×118
したがって正解は「イ」です。
© 2016-2019 データベーススペシャリストドットコム All Rights Reserved.

Pagetop