ホーム > データベーススペシャリスト試験 > 2019年
データベーススペシャリスト試験 2019年 午前2 問11
“社員取得資格”表に対し, 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. 選択肢の判定
4. 出力結果(問題の例)
FE だけの S002・S003 も残り、要件どおり。
結論
a に入る句として正しいのは 選択肢「ア」 である。