IPA過去問ドリル

平成21年度 秋期 システムアーキテクト試験 午前Ⅱ 問23

テクノロジ/データベース

“納品”表と“顧客”表を自然結合するSQL文はどれか。 〔表の構成〕 ・納品表:顧客番号,商品番号,納品数量 ・顧客表:顧客番号,顧客名 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:平成21年度 秋期 システムアーキテクト試験 午前Ⅱ 問23

正解:エ

解説

“納品”表と“顧客”表は、共通の項目である“顧客番号”を結合条件として自然結合する。自然結合では、両方の表に共通する列(顧客番号)を結合条件として一致するものだけを取り出し、結果には共通列を1回だけ、それ以外の列(商品番号,納品数量,顧客名)はすべて含める。したがって、SELECT句に納品.顧客番号,納品.商品番号,納品.納品数量,顧客.顧客名を指定し、WHERE句で納品.顧客番号=顧客.顧客番号として結合するSQL文が適切である。

選択肢ごとの解説

  • 誤り。SELECT * とすると、納品.顧客番号と顧客.顧客番号の両方が重複して出力されてしまい、自然結合の結果(共通列は1回だけ)と一致しない。
  • 誤り。WHERE句が納品.顧客番号 <> 顧客.顧客番号となっており、顧客番号が一致しない行を取り出す結合になっているため、自然結合の結果にならない。
  • 誤り。FROM句が納品表だけであり、副問合せで顧客表に存在する顧客番号かどうかを判定しているだけなので、結果に顧客名の列が含まれず、自然結合の結果と一致しない。
  • 正しい。共通の列である顧客番号で等結合し、結合条件に使った列を1回だけ、それ以外の列をすべて選択するこのSQL文が、自然結合と同じ結果を得る。
システムアーキテクトの過去問を演習モードで解く