DBデータベーススペシャリスト試験 午前Ⅱ

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

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

“社員取得資格”表に対し,SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。
社員コードと資格から成る社員取得資格表,社員コード・資格1・資格2の結果表,及び同じ表をLEFT OUTER JOINするSQL文のa挿入箇所。
社員コードと資格から成る社員取得資格表,社員コード・資格1・資格2の結果表,及び同じ表をLEFT OUTER JOINするSQL文のa挿入箇所。

選択肢

  1. ア
    ON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 = 'FE'
  2. イ
    ON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 IS NOT NULL
  3. ウ
    ON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C2.資格 = 'AP'
  4. エ
    ON C1.社員コード = C2.社員コード WHERE C1.資格 = 'FE' AND C2.資格 = 'AP'
解き方のヒントを見る

SQL抽出条件を結果に結び付ける視点

SQLの抽出条件と結果の対応を考えるときは、条件が各行を対象にする観点に絞り、条件の組み合わせ方と対象列の値を落ち着いて照合します。答えを決め打ちせず、結果に現れる行の特徴を確認しましょう。

この問題で問われていること

確認の中心は、抽出条件を構成する各要素が、行を残す判断にどう関係するかです。条件同士の結び付きと比較対象の列を見比べ、結果に含まれる行との対応を整理してください。

視点

抽出条件を読む際は、条件が参照する列と比較の単位を捉え、条件全体が各行の採否へ与える影響を整理します。結果側では、含まれる行に共通する特徴と条件との対応関係を観察しましょう。

確認ポイント

  • 条件が参照している列と値の種類を確認する
  • 複数の条件がある場合、それぞれの関係を整理する
  • 結果に現れる行の共通点と条件の対応を見直す
正解と解説を見る

正解

ア

解説

LEFT OUTER JOINでC1側のFE取得者を全員残し、C2側に同じ社員コードのAPがある場合だけ資格2を表示するには、資格条件の一部をON句に置き、C1側の対象をWHERE句で指定する。

正答の理由

正答はア。ON句で社員コードの一致に加えてC1をFE、C2をAPに限定し、WHERE句でC1のFE行だけを選ぶ。C2にAPがないS002とS003は、C2資格がNULLのまま残り、S001だけはAPが表示されるため、示された結果と一致する。

比較の要点

LEFT OUTER JOINの右表側条件をWHERE句に置くと、右表がNULLになった行まで除外される。したがって、対応するAPがない社員も残したい場合は、APという条件をON句で指定する必要がある。

選択肢ア(正解)

これは正解だよ。ON句で社員コードを一致させた上で、C1をFE、C2をAPに限定している。さらにWHERE句でC1のFE行だけを残すため、APがないS002とS003も左外部結合によって残り、C2資格はNULLになる。

選択肢イ

これは不正解だよ。ON句の条件自体は同じだが、WHERE句がC1資格のNULL判定だけになっている。そのためC1のAPやDBなど、FEではない資格行も除外されず、結果に余分な社員資格が含まれてしまう。

選択肢ウ

これは不正解だよ。WHERE句でC2資格がAPの行だけを残すため、C2に対応するAPがないS002とS003は、左外部結合でNULLになった後に除外される。したがって、結果に必要なNULL行が得られない。

選択肢エ

これは不正解だよ。ON句では社員コードだけを一致させ、FEとAPの条件をWHERE句で指定している。WHERE句でC2資格がAPに限定されるため、対応するAPがないS002とS003が除外され、LEFT OUTER JOINの効果を失う。

学習のポイント

LEFT OUTER JOINでは、結合条件をON句に置くかWHERE句に置くかで、対応行のない左表行が残るかどうかが変わる。

出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 データベーススペシャリスト試験 午前Ⅱ 問11(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針