<テーマ:SQLに入れる字句(外結合)>
正解はこちら
解答:ア
[基礎知識・用語のまとめ]
左外結合(LEFT OUTER JOIN)・・・左外結合は次の書式で記述され、探索条件に該当するテーブル2の行がなくても、テーブル1のすべての行が抽出されます。
書式:FROM テーブル1 LEFT OUTER JOIN テーブル2
ON 探索条件1(AND 探索条件2…)
また、WHERE句で絞り込み条件が指定されている場合は、左外結合の結果に対し、WHERE句の絞り込み条件が適用されます。
[解法]
問題のSQL文の実行結果では、資格2の抽出結果として’AP’とNULLがあることから、WHERE句の抽出条件に「C2.資格=’AP’」が含まれている(ウ)、(エ)は、資格2が’AP’の結果しか得ることができないため、誤りです。
(ア)、(イ)の違いはWHERE句の絞り込み条件であるため、左外結合の結果を考えます。左結合にてテーブル1の探索条件に合致しなかった残りの行については、テーブル2の値がNULLで抽出されます。
問題の「結果(右の表)」は差外部結合の結果からC1.資格が’FE’だけのものを抽出したものであることがわかるため、したがって、WHERE句の絞り込み条件は「C1.資格=’FE’」であり、選択肢「ア」が正解となります。
[参考]
問題ではLEFT OUTER JOINのON句に共通列(社員コード)の等号条件以外に「AND C1.資格 = ‘FE’ AND C2.資格 = ‘AP’」が付加されており、先にC1とC2をこの条件で絞り込み、その結果を結合すると勘違いする可能性がある。しかし、この場合、問題の結果にならず、外結合では探索条件に合致しない行も残ることに注意が必要となる、、、らしい。
利用させていただきました素材へのリンク
うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw
コメント