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

選択肢
- アFULL OUTER JOIN
- イINNER JOIN
- ウLEFT OUTER JOIN
- エRIGHT OUTER JOIN
解き方のヒントを見る
片方だけにあるIDを考える視点
表Aと表Bの両方を参照し、共通するIDを求めるのか、片方にだけ現れるIDを求めるのかを区別して、問題文が指定する集合の関係とSQLの役割に分けて読み取りましょう。選択肢の字句名そのものは先に決めつけないことが重要です。
この問題で問われていること
確認の中心は、二つの表を比較した結果から、両方に存在する行を残すのではなく、一方だけに存在する行を対象にする条件が、SQL文のどの部分で表現されるかという点です。
視点
SQLでは複数の表を比較する際、共通部分を扱うのか、重なりを除いた片側の集合を扱うのかを、文全体の目的と照らして確認します。
確認ポイント
- 問題文が求めているIDの所属関係を確認する
- 共通するIDを扱う処理との違いを整理する
- 空白部分が集合の比較を表す位置か確認する
正解と解説を見る
正解
ア
解説
片方の表にだけ存在するIDを得るには,両表の行を残して未一致側をNULLにし,WHERE句でその行を抽出できる結合を使う。
理由
FULL OUTER JOINはAとBの全行を結合結果に含める。一致するIDは一行にまとまり,一致しないIDは相手側の列がNULLになる。WHERE A.ID IS NULL OR B.ID IS NULLによって,どちらか一方にしか存在しない行だけを抽出できる。
比較
INNER JOINは両表で一致する行だけを残すため,WHERE句のNULL条件に該当する行がなくなる。LEFT OUTER JOINはA側,RIGHT OUTER JOINはB側を基準に未一致行を残すが,反対側の表にだけ存在するIDを常に含められず,両表の片側限定行を対象にする設問の条件を満たさない。
選択肢ア(正解)
これは正解だよ。FULL OUTER JOINは表Aと表Bの全行を結果に残し,結合条件に一致しない側の列をNULLにする。したがって,A.ID IS NULL OR B.ID IS NULLで,一方の表にだけ存在するIDを抽出できる。
選択肢イ
これは不正解だよ。INNER JOINは結合条件A.ID = B.IDに一致する行だけを結果に残す。表Aまたは表Bにしか存在しないIDは結果から除かれるため,WHERE句でNULLを調べても片側だけのIDを取得できない。
選択肢ウ
これは不正解だよ。LEFT OUTER JOINは表Aの全行と,条件に一致した表Bの行を残す。表Bにだけ存在するIDは結果に現れないため,表Aと表Bのどちらか一方だけに含まれるIDをすべて取得する条件には合わない。
選択肢エ
これは不正解だよ。RIGHT OUTER JOINは表Bの全行と,条件に一致した表Aの行を残す。表Aにだけ存在するIDは結果に現れないため,表Aと表Bの片側限定IDを両方とも抽出することはできない。
学習のポイント
外部結合の行保存範囲とNULL条件の組合せを理解する。
出典:独立行政法人 情報処理推進機構(IPA)令和5年度秋期 データベーススペシャリスト試験 午前Ⅱ 問10(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針