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

選択肢
- ア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'
解き方のヒントを見る
抽出条件と結果を照らす視点
SQLの抽出条件と得られる行の対応を考えるときは、条件がどの行に適用され、複数の条件や欠損値の扱いが結果の範囲にどう影響し得るかを、処理の流れに沿って整理しましょう。
この問題で問われていること
確認する観点を、抽出対象を決める条件の評価単位に絞ります。各条件が列・行・組合せのどこを見ているかを整理し、条件同士の関係と境界の扱いを画面の選択肢と比較してください。
視点
抽出結果を読む際は、対象となるデータの単位、条件が参照する値、条件が重なった場合の関係を順に整理します。構文の細部を暗記するより、各条件が結果に与える影響を独立に捉えることが大切です。
確認ポイント
- 抽出対象がどのデータ単位として評価されるかを確認する
- 各条件が参照する列や値の範囲を画面上の選択肢と照合する
- 複数条件の組合せと境界値・未設定値の影響を分けて整理する
正解と解説を見る
正解
ア
解説
LEFT OUTER JOINは左表の行を残す結合であり、結合相手に関する条件をON句へ置くかWHERE句へ置くかで結果が変わります。左側の資格を限定しつつ、対応する資格がない社員も残す構文を選びます。
理由
結果には、FEを持ちAPも持つS001がAP付きで表示され、FEだけを持つS002とS003は資格2がNULLで残っています。したがって、C1側をFEに限定し、C2側のAPは結合条件として扱う必要があります。
比較
C2の条件をWHERE句に置くと、対応行がなくNULLになったS002とS003が除外されます。一方、C1の条件をWHERE句でFEに限定し、C2のAP条件をON句に置けば、左外部結合の行保持を維持できます。
選択肢ア(正解)
これは正解だよ。ON句で社員コードが同じで、C1がFE、C2がAPの場合だけ対応付け、WHERE句で左側のC1をFEに限定しています。対応するC2がないS002とS003は、LEFT OUTER JOINによって資格2がNULLのまま残るため、示された結果と一致します。
選択肢イ
これは不正解だよ。ON句の結合条件は適切ですが、WHERE句がC1の資格をIS NOT NULLとしているため、FE以外の資格を持つ左側の行も抽出対象になります。その結果、APやDB、SMの行まで残り、FEだけを表示する結果とは一致しません。
選択肢ウ
これは不正解だよ。C2の資格をWHERE句でAPに限定しているため、C2に対応行がなく資格2がNULLになるS002とS003が除外されます。LEFT OUTER JOINで左側の行を残す効果が失われ、提示された結果のNULL行を得られません。
選択肢エ
これは不正解だよ。ON句では社員コードだけを結合条件にし、C1がFE、C2がAPという条件をWHERE句で適用しています。C2がNULLの行はWHERE条件を満たさないため、S002とS003が除外され、結果に必要な左外部結合の行保持ができません。
学習のポイント
ON句とWHERE句の役割、および外部結合でNULLになる列の扱いを学びます。
出典:独立行政法人 情報処理推進機構(IPA)平成27年度春期 データベーススペシャリスト試験 午前Ⅱ 問8(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針