HOME»データベーススペシャリスト令和4年秋期»午前Ⅱ 問6
データベーススペシャリスト令和4年秋期 午前Ⅱ 問6
問6
"文書"表,"社員"表から結果を得るSQL文はどれか。〔結果〕〔SQL文〕
分類
テクノロジ系 » データベース » データ操作
正解
ア
解説
〔結果〕を見ると、作成者氏名として"文書"表の作成者IDに対応する"社員"表の氏名を表示し、承認者氏名として"文書"表の承認者IDに対応する"社員"表の氏名を表示していることがわかります。また、作成者ID:500の行の作成者氏名をNULLとして表示していることから、"社員"表に対応する社員IDがない行についても結果に出力しなければなりません。単純に内部結合(INNER JOIN)をしてしまうと、作成者ID:500の行が消えてしまうので、左外部結合(LEFT OUTET JOIN)を使うことになります。
- 正しい。"文書"表と"社員"表を作成者IDをキーとして左外部結合し、"文書"表と"社員"表を承認者IDをキーとして左外部結合しています。これにより作成者IDと作成者氏名、承認者IDと承認者氏名が紐付けられ、かつ、"社員"表に対応する行がない場合にはNULLが表示されることになります。
- 右外部結合だと、"社員"の社員ID:500の行が消えてしまうため不適切です。2段階で右外部結合が行われた結果、SQLの実行結果としては以下が出力されます。
- 表のエイリアス定義(A・B)が重複しているため、構文エラーとなります。
- 内部結合ではキーの値が両方の表に共通している行のみが残ります。"文書"表"にしか存在しない社員ID:500の行が消えてしまうため不適切です。