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

選択肢
- ア文書 LEFT OUTER JOIN 社員 A ON 文書.作成者ID = A.社員ID LEFT OUTER JOIN 社員 B ON 文書.承認者ID = B.社員ID
- イ文書 RIGHT OUTER JOIN 社員 A ON 文書.作成者ID = A.社員ID RIGHT OUTER JOIN 社員 B ON 文書.承認者ID = B.社員ID
- ウ文書,社員 A,社員 B LEFT OUTER JOIN 社員 A ON 文書.作成者ID = A.社員ID LEFT OUTER JOIN 社員 B ON 文書.承認者ID = B.社員ID
- エ文書,社員 A,社員 B WHERE 文書.作成者ID = A.社員ID AND 文書.承認者ID = B.社員ID
解き方のヒントを見る
表同士の関係を読む確認視点
この問題では、文書と社員という二つの表から結果を作る際に、表同士の対応関係をSQL文のどの役割で表現するかに注目します。字句そのものを暗記せず、処理の目的を整理してください。
この問題で問われていること
確認の中心は、二つの表を単独で扱うのか、情報を関連付けて扱うのかという点です。aの位置が担う役割と、得たい結果との対応だけを考えます。
視点
表を複数使うSQLでは、各表の情報をどのような関係として扱うかが結果の意味を左右します。まずaの前後が文中で担う役割を読み、抽出条件と表の関連付けを混同しないよう整理しましょう。
確認ポイント
- aの位置が、表の関連付けと行の絞り込みのどちらに関係するか
- 文書と社員の情報を同時に扱う目的が、問題文からどう読み取れるか
- 結果に必要な対応関係が、どのような条件を通じて表現される想定か
正解と解説を見る
正解
ア
解説
文書4の作成者IDは社員表に存在しないため、作成者氏名をNULLとしても文書4を結果に残す必要がある。文書を基準に社員表を二度外部結合する。
理由
結果には文書表の文書ID 1〜4がすべて現れている。一方、文書4の作成者ID 500は社員表にないため、作成者氏名だけがNULLになる。この結果を得るには、文書表の行を残しながら、作成者用と承認者用に社員表を結合する必要がある。
比較
社員表は作成者と承認者という二つの役割で使われるため、別名AとBを付けて参照する。文書を基準に左外部結合すれば、社員表に一致しない作成者がいても文書の行は保持され、承認者の氏名も別に取得できる。
選択肢ア(正解)
これは正解だよ。文書を基準に、社員表をAとBの二つの別名で参照している。作成者IDと承認者IDをそれぞれ社員IDに対応させ、左外部結合によって社員ID 500のように社員表に存在しない作成者がいても、文書4の行を残せるため、示された結果と一致する。
選択肢イ
これは不正解だよ。RIGHT OUTER JOINでは、結合の右側にある社員表の行を残すことが優先される。この文では社員表を二度右側に置くため、文書表の全行を保持する結果にならず、社員表に存在しない作成者ID 500を持つ文書4を残せない。
選択肢ウ
これは不正解だよ。先頭で文書と社員A、社員Bをコンマで並べた上で、さらに同じ社員表への左外部結合を記述しており、表の指定が重複している。文書を基準に必要な二つの役割を結合するSQL文として正しく構成されていない。
選択肢エ
これは不正解だよ。WHERE句で作成者IDと承認者IDの一致条件を指定すると、対応する社員が存在する行だけが残る。社員ID 500に一致する行がない文書4は除外され、結果に必要な文書4の作成者氏名NULLを表現できない。
学習のポイント
自己結合ではなく、同じ社員表を別名で二度参照する外部結合の考え方を学ぶ。
出典:独立行政法人 情報処理推進機構(IPA)令和4年度秋期 データベーススペシャリスト試験 午前Ⅱ 問6(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針