HOME»データベーススペシャリスト平成22年春期»午前U 問14
データベーススペシャリスト平成22年春期 午前U 問14
問14
"製品"表と"在庫"表に対し,次のSQL文を実行した結果として得られる表の行数は幾つか。

- 1
- 2
- 3
- 4
- [出題歴]
- データベース H17春期 問36
分類
テクノロジ系 » データベース » データ操作
正解
イ
解説
EXISTS句を使用した相関副問い合わせでは主問い合わせの表の1行ごとに副問い合わせが実行されます。設問の製品表には5行が存在するので、副問合せも5回行われることになります。
[1行目(製品番号:AB1805)]
副問合せでは製品番号を結合キーとして製品表と在庫表を結合し、製品番号がAB1805かつ在庫数が30より多い行が抽出されます。このため副問合せからは以下の実行結果が返されます。
NOT EXISTS句は存在しない場合に真を返す比較演算子なので、主問合せのWHERE句は1行目に対して偽を返します。
[2行目(製品番号:CC5001)]
1行目と同様に副問合せで製品番号がCC5001かつ在庫数が30より多い行を抽出しているため、副問合せからは以下の表が返されます。
結果が存在するためWHERE句は2行目に対して偽を返します。
[3行目(製品番号:MZ1000)]
副問合せで製品番号がMZ1000かつ在庫数が30より多い行が抽出されます。しかし、在庫表には製品番号MZ1000の行は存在しないため副問合せの結果はNULLになります。したがってWHERE句は3行目に対して真を返します。
[4行目(製品番号:XZ3000)]
副問合せで製品番号がXZ3000かつ在庫数が30より多い行が抽出されます。在庫表には製品番号XZ3000の行が2つありますが、どちらも在庫が30以下のため副問合せの結果はNULLになります。したがってWHERE句は4行目に対して真を返します。
[5行目(製品番号:ZZ9900)]
副問合せで製品番号がZZ9900かつ在庫数が30より多い行が抽出されます。
結果が存在するためWHERE句は5行目に対して偽を返します。
したがってSQL文の結果は製品ひょうのうち条件に合致した2行(製品番号:MZ1000,XZ3000)の製品番号列を抜き出した以下の表となります。
したがって正解は「イ」です。
[1行目(製品番号:AB1805)]
副問合せでは製品番号を結合キーとして製品表と在庫表を結合し、製品番号がAB1805かつ在庫数が30より多い行が抽出されます。このため副問合せからは以下の実行結果が返されます。

[2行目(製品番号:CC5001)]
1行目と同様に副問合せで製品番号がCC5001かつ在庫数が30より多い行を抽出しているため、副問合せからは以下の表が返されます。

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

副問合せで製品番号がZZ9900かつ在庫数が30より多い行が抽出されます。

したがってSQL文の結果は製品ひょうのうち条件に合致した2行(製品番号:MZ1000,XZ3000)の製品番号列を抜き出した以下の表となります。
