IPA過去問ドリル

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

テクノロジ/データベース

“社員”表と“プロジェクト”表に対して,次のSQL文を実行した結果はどれか。 SELECT プロジェクト番号,社員番号 FROM プロジェクト WHERE 社員番号 IN (SELECT 社員番号 FROM 社員 WHERE 部門 <= '2000') 社員 社員番号:11111,部門:1000,社員名:佐藤一郎 社員番号:22222,部門:2000,社員名:田中太郎 社員番号:33333,部門:3000,社員名:鈴木次郎 社員番号:44444,部門:4000,社員名:高橋美子 社員番号:55555,部門:4000,社員名:渡辺三郎 プロジェクト プロジェクト番号:P001,社員番号:11111 プロジェクト番号:P001,社員番号:22222 プロジェクト番号:P002,社員番号:33333 プロジェクト番号:P002,社員番号:44444 プロジェクト番号:P003,社員番号:55555 (注:本サイトでは原問題の表を文字表記に変換しています)

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

正解:ア

解説

内側のSELECT文「SELECT 社員番号 FROM 社員 WHERE 部門 <= '2000'」は,部門コードが文字列として'2000'以下の社員,すなわち部門が1000の佐藤一郎(社員番号11111)と部門が2000の田中太郎(社員番号22222)の社員番号を返す。外側のSELECT文は,この結果に社員番号が含まれる行を“プロジェクト”表から取り出すので,社員番号が11111又は22222であるプロジェクトの行,すなわち(P001,11111)と(P001,22222)の2行が結果となる。

選択肢ごとの解説

  • 正しい。部門が'2000'以下である社員は佐藤一郎(11111)と田中太郎(22222)であり,これらの社員番号をもつプロジェクトの行は(P001,11111)と(P001,22222)である。
  • 誤り。社員番号22222(田中太郎)は条件を満たすが,33333(鈴木次郎)は部門が3000であり,'2000'以下という条件を満たさないため,この行の組合せは結果に含まれない。
  • 誤り。社員番号33333,44444はいずれも部門が3000,4000であり,'2000'以下という条件を満たさないため,これらの社員番号をもつプロジェクトの行は結果に含まれない。
  • 誤り。社員番号44444,55555はいずれも部門が4000であり,'2000'以下という条件を満たさないため,これらの社員番号をもつプロジェクトの行は結果に含まれない。
データベーススペシャリストの過去問を演習モードで解く