SkillStack
テクノロジ系6 / 25問

データベーススペシャリスト試験 令和4年度 秋期 午前II 問6

"文書"表、"社員"表から結果を得るSQL文のaに入れる字句はどれか。

〔SQL文〕  SELECT 文書ID、作成者ID、A.氏名 AS 作成者氏名、    承認者ID、B.氏名 AS 承認者氏名 FROM 「a」

データベーススペシャリスト試験 令和4年度 秋期 午前II 問6の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】ア

結果には文書表の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に質問できる
SkillStackで無料で始める