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

平成27年度 春期 午前Ⅱ 問8

データ操作

NULLに関する問題

“社員取得資格”表に対し,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にして結果に残ります。正解の字句で評価してみます。左側のC1でFEをもつS001、S002、S003の行は、ONの条件で同じ社員のAPを探します。S001にはAPがあるので(S001, FE, AP)になり、S002とS003にはないので資格2がNULLの行になります。FE以外の行はONの条件を満たさず、資格2がNULLの行として残りますが、WHEREのC1.資格 = 'FE'で除かれます。こうして結果は3行となり、示された結果と一致します。相手探しの条件はON、結果に残す行の条件はWHEREと、役割を分けて読むのがコツです。

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

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

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