過去問解きまくり研究所 ホーム

平成24年度 春期 午前Ⅱ 問11

データ操作

副問合せに関する問題

“社員”表と“プロジェクト”表に対して,次の SQL 文を実行した結果はどれか。

SELECT プロジェクト番号, 社員番号 FROM プロジェクト
       WHERE 社員番号 IN
       (SELECT 社員番号 FROM 社員 WHERE 部門 <= '2000')

社員

社員番号部門社員名
111111000佐藤一郎
222222000田中太郎
333333000鈴木次郎
444443000高橋美子
555554000渡辺三郎

プロジェクト

プロジェクト番号社員番号
P00111111
P00122222
P00233333
P00244444
P00355555

選択肢は原典では列 プロジェクト番号,社員番号 の表。各肢は行を上から順に「/」で区切って書いた。

答えと解説を見る

✓ これが正解アP001,11111 / P001,22222

解説

部門が2000以下の社員11111と22222の、P001 の2行が返ります。

まず副問合せを評価します。“社員”表で部門 <= '2000' を満たすのは、部門1000の11111と部門2000の22222の二人です。部門は文字列として比べていますが、どれも同じ桁数の数字なので、数の大小と同じ結果になります。次に、外側の問合せで“プロジェクト”表から社員番号がこの二つのどちらかに一致する行を取り出すと、(P001,11111) と (P001,22222) の2行です。33333以降の社員は部門3000や4000で、副問合せの結果に含まれません。IN を使った副問合せは、内側の結果を値の一覧に置き換えてから外側を読む、と2段に分けて追うと確実です。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)