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

令和3年度 秋期 午前Ⅱ 問8

データ操作

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 で C1 を FE に絞ると3行になります。

左外部結合では、ON の条件は右の表から結合相手を探すときにだけ使われ、条件に合う相手が無い左の行も、右側の列を NULL にして残ります。WHERE は結合が済んだ後の行を絞り込みます。正解の字句は、ON で同じ社員コード、C1 が FE、C2 が AP の組を探し、WHERE で C1 が FE の行だけに絞ります。FE を持つのは S001、S002、S003 で、AP も持つ S001 は C2 に AP が入り、S002 と S003 は相手が無いので NULL になります。これで結果の3行と一致します。ON に書いた条件は相手探しにだけ効き、左の行を減らすのは WHERE だと区別して読むことが、外部結合の穴埋めを解く鍵です。

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

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

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