DBデータベーススペシャリスト試験 午前Ⅱ
平成24年度春期 データベーススペシャリスト 午前Ⅱ 問11
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア図ア
- イ図イ
- ウ図ウ
- エ図エ
解き方のヒントを見る
SQL条件確認の一つの視点
抽出条件と結果の対応を考えるときは、条件を構成する要素と、各行がその条件に照らしてどう扱われるかを段階的に整理し、全体の結果とのつながりを確認しましょう。また、見た目の結果だけでなく、条件が評価される対象も確認します。
この問題で問われていること
今回の確認では、複数の条件がある場合に、それぞれがどの範囲のデータに関係し、条件同士の組み合わせが判定全体へどう影響するかという一点に注目してください。必要なら、条件ごとに短く言い換えてから比較します。
視点
まず、対象となる行・列・条件・結果の関係を分けて書き出し、各条件を単独で見た場合の意味と、組み合わせた後に確認すべき観点を整理します。具体的な値を急いで計算する前に、条件が参照する対象と判定の単位が一致しているかを見直すと、読み違いに気づきやすくなります。
確認ポイント
- 各条件が参照している列や値の範囲を整理する
- 一行ごとの判定と全体の抽出結果を混同していないか確認する
- 条件を組み合わせたときに、確認対象の単位が変わっていないか見直す
正解と解説を見る
正解
ア
解説
副問合せは部門が2000以下の社員番号を求め、その番号を持つプロジェクト表の行だけをIN条件で抽出します。該当する行を照合すると、結果は図アの2行になります。
理由
社員表で部門が2000以下なのは、部門1000の社員番号11111と、部門2000の社員番号22222です。したがって副問合せの結果はこの二つの社員番号になります。
比較
プロジェクト表で社員番号11111または22222を持つ行は、プロジェクト番号P001の2行です。よってSELECTが返す列はP001・11111とP001・22222となり、図アと一致します。
選択肢ア(正解)
これは正解だよ。社員表で部門が2000以下となる社員番号は11111と22222であり、プロジェクト表ではその二つがともにP001に対応しています。SELECTの列もプロジェクト番号と社員番号なので、図アの2行がSQL実行結果と一致します。
選択肢イ
これは不正解だよ。図イには社員番号22222と33333の行が示されていますが、社員番号33333の部門は3000で、部門が2000以下という副問合せの条件を満たしません。さらに社員番号11111の行も欠けているため、抽出結果とは一致しません。
選択肢ウ
これは不正解だよ。図ウは社員番号33333と44444を含むP002の行ですが、どちらも社員表の部門が3000です。副問合せの部門条件は2000以下なので、この二つの社員番号はIN条件の対象にならず、図ウは結果になりません。
選択肢エ
これは不正解だよ。図エの社員番号44444と55555は、それぞれ部門3000と4000の社員です。いずれも部門が2000以下ではないため副問合せの結果集合に含まれず、P002とP003の行を抽出することはできません。
学習のポイント
副問合せの結果集合と外側のIN条件を対応付けて読む。
出典:独立行政法人 情報処理推進機構(IPA)平成24年度春期 データベーススペシャリスト試験 午前Ⅱ 問11(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針