過去問解きまくり研究所 ホーム

令和4年度 秋期 午前Ⅱ 問6

データ操作

NULLに関する問題

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

文書

文書 ID作成者 ID承認者 ID
1100200
2100300
3200400
4500400

社員

社員 ID氏名
100山田太郎
200山本花子
300川上一郎
400渡辺良子

〔結果〕

文書 ID作成者 ID作成者氏名承認者 ID承認者氏名
1100山田太郎200山本花子
2100山田太郎300川上一郎
3200山本花子400渡辺良子
4500NULL400渡辺良子
〔SQL 文〕
SELECT 文書 ID, 作成者 ID, A.氏名 AS 作成者氏名,
     承認者 ID, B.氏名 AS 承認者氏名  FROM [ a ]
答えと解説を見る

✓ これが正解ア文書 LEFT OUTER JOIN 社員 A ON 文書.作成者 ID = A.社員 ID LEFT OUTER JOIN 社員 B ON 文書.承認者 ID = B.社員 ID

解説

作成者と承認者の両方を、文書を左に置いた左外部結合でつなぎます。

結果の4行目を見ると、作成者 ID の 500 は社員表に無いのに文書の行は残り、作成者氏名が NULL になっています。これは、文書表を左に置き、作成者 ID で社員表と左外部結合した形でなければ得られません。氏名は作成者と承認者の二人分が必要なので、社員表を A と B の二つの相関名で使い、A とは作成者 ID で、B とは承認者 ID で、それぞれ LEFT OUTER JOIN します。正解の字句を手で評価すると、文書1〜3は両方の氏名が入り、文書4は作成者氏名だけが NULL で、結果の4行と一致します。結果の中の NULL がどちらの表の側に出ているかを見れば、外部結合の向きを決められます。

ほかの選択肢はなぜ違うのか

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

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)