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

平成31年度 春期 午前Ⅱ 問11

データ操作

SQL文のaに入れる字句

“社員取得資格”表に対し,SQL文を実行して結果を得た。SQL文のaに入れる字句はどれか。

社員取得資格

社員コード資格
S001FE
S001AP
S001DB
S002FE
S002SM
S003FE
S004AP
S005NULL

〔結果〕

社員コード資格1資格2
S001FEAP
S002FENULL
S003FENULL

〔SQL文〕

SELECT C1.社員コード, C1.資格 AS 資格1, C2.資格 AS 資格2
  FROM 社員取得資格 C1 LEFT OUTER JOIN 社員取得資格 C2
    [  a  ]
答えと解説を見る

✓ これが正解アON C1.社員コード = C2.社員コード AND C1.資格 = 'FE' AND C2.資格 = 'AP' WHERE C1.資格 = 'FE'

解説

結合の条件はONに置き、結果に残す行はWHEREでFEの行に絞ります。

外結合では、ONに書いた条件は相手の行をつなぐかどうかだけを決め、左側の行はつながる相手がなくてもNULLを付けて残ります。正解の字句では、ONで社員コードが等しく、C1の資格がFE、C2の資格がAPの組だけをつなぎます。左側の8行のうち、S001のFEはAPとつながり、S002とS003のFEは相手がなくNULLになります。FE以外の資格やNULLの5行も相手がないまま残るので、WHERE C1.資格 = 'FE' で除くと、S001 FE AP、S002 FE NULL、S003 FE NULLの3行になり、結果と一致します。外結合の問題では、ONの条件とWHEREの条件をそれぞれ手で当てはめ、何行残るかを数えるのが確実です。

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

出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11

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