
応用情報技術者試験基礎・応用
条件を読む・根拠を説明する
外部結合後の条件の位置
条件を整理し、答えを選んでから解き方を確認しましょう。
顧客A,B各1行、注文はAに金額50の1件だけ。顧客LEFT JOIN注文の後、WHERE注文金額>100で抽出する。結果の行数はどれか。
答え・解き方を読む
0行
図で見る
結合で残ってもWHEREで消える
Aは50>100が偽。Bの注文金額はNULLで比較結果が真になりません。LEFT JOIN後のWHEREで両行が除かれ、結果は0行です。
図は問題の関係を整理する模式図です。記号には各問題の数値を当てはめます。寸法・面積・時間の縮尺や、実施工の全条件は表していません。
考える順序
- 1Aの注文50は100超を満たさない
- 2Bの注文側はNULLで比較結果は真にならない
- 3WHEREで残る行がなく0行となる
選択肢ごとの理由
- 比較 · 1行(Aだけ)
50>100は偽なのでAの行は残りません。
- 正解 · 0行
Aの注文50は100超を満たさない。Bの注文側はNULLで比較結果は真にならない。WHEREで残る行がなく0行となる。
- 比較 · 1行(Bだけ)
WHEREの比較でNULLの行が自動的に残るわけではありません。
- 比較 · 2行(AとB)
外部結合で保持した行も後段のWHEREで除外され得ます。