ホーム > データベーススペシャリスト試験 > 2019年

データベーススペシャリスト試験 2019年 午前211


“社員取得資格”表に対し, SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。
問題画像
ON C1.社員コード = C2.社員コード
    AND C1.資格 = 'FE' AND C2.資格 = 'AP'
WHERE C1.資格 = 'FE'
(正解)
ON C1.社員コード = C2.社員コード
    AND C1.資格 = 'FE' AND C2.資格 = 'AP'
WHERE C1.資格 IS NOT NULL
ON C1.社員コード = C2.社員コード
    AND C1.資格='FE' AND C2.資格='AP'
WHERE C2.資格='AP'
ON C1.社員コード = C2.社員コード
WHERE C1.資格='FE' AND C2.資格='AP'

解説

解説:問11 ― 自己結合で「FE と AP の資格ペア」を抽出する SQL


1. 出題の意図

  • 社員取得資格表から
    • 資格1 に “FE”
    • 資格2 に “AP”
      となる行を作りたい。
  • “FE だけ”を持つ人や “AP だけ”を持つ人も結果に残す。
    LEFT OUTER JOIN(左外部結合)で FE 行は必ず残し、AP 行がなければ NULL を返す。

2. 正しい結合条件

FROM 社員取得資格 C1
LEFT OUTER JOIN 社員取得資格 C2
     ON C1.社員コード = C2.社員コード
    AND C1.資格      = 'FE'
    AND C2.資格      = 'AP'
WHERE C1.資格 = 'FE';
  • ON 句
    • 同じ社員コードであること
    • C1 が ‘FE’、C2 が ‘AP’ を満たす行同士を結合
  • WHERE 句
    • 左表 C1 は必ず ‘FE’ の行に限定
    • AP を持たない社員でも FE 行は残る(C2 資格が NULL)

3. 選択肢の判定

選択肢JOIN の条件WHERE の条件評価
ON C1.社員コード = C2.社員コード AND C1.資格='FE' AND C2.資格='AP'WHERE C1.資格='FE'◎ 正しい
C1.資格 IS NOT NULL を WHERE に入れ FE 制限が曖昧×
WHERE が C2.資格='AP' → 外部結合の意味がなくなる×
WHERE で両方の資格を指定 → 内部結合と同じ結果×

4. 出力結果(問題の例)

社員コード資格1資格2
S001FEAP
S002FENULL
S003FENULL
FE だけの S002・S003 も残り、要件どおり。

結論

a に入る句として正しいのは 選択肢「ア」 である。
← 前の問題へ次の問題へ →

©︎2025 情報処理技術者試験対策アプリ