データベーススペシャリスト試験 令和4年度 秋期 午前II 問6
"文書"表、"社員"表から結果を得るSQL文のaに入れる字句はどれか。
〔SQL文〕 SELECT 文書ID、作成者ID、A.氏名 AS 作成者氏名、 承認者ID、B.氏名 AS 承認者氏名 FROM 「a」

選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ア
結果には文書表の4行が全て残っています。特に文書IDが4の行は、作成者IDが500ですが、社員表には社員IDが500の行がありません。それでも文書の行を残し、対応する作成者氏名だけをNULLにするには、文書表を左側にしたLEFT OUTER JOINが必要です。また、社員表を作成者用のAと承認者用のBとして別々に結合すれば、それぞれの氏名を取得できます。したがってアが正解です。
イのRIGHT OUTER JOINは誤りです。右側の社員表の行を保存する結合なので、社員表に存在する社員を基準とした結果になり、作成者IDが500の文書を正しく保存できません。
ウは誤りです。社員Aと社員Bをコンマで列挙した上で、同じ別名A、Bを外部結合で再定義しており、別名が重複します。意図した結合構造にもならず、正しいFROM句ではありません。
エは誤りです。WHERE句の等値条件による結合は内部結合に相当します。社員表に作成者IDが500の行がないため、文書IDが4の行が結果から除かれます。
【ポイント】 LEFT OUTER JOINは、左側の表の行を全て残し、対応行がなければ右側の列をNULLにします。 同じ表を異なる役割で複数回結合するときは、A、Bのような別名を付けて区別します。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前II 問6
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の25問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる