HOME»データベーススペシャリスト令和4年秋期»午前U 問6
データベーススペシャリスト令和4年秋期 午前U 問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の行が消えてしまうため不適切です。