IPA過去問ドリル

平成24年度 春期 基本情報技術者試験 午前 問30

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

“注文”表と“製品”表に対して,次の SQL 文を実行したときに得られる結果はどれか。 SELECT 製品名,数量 FROM 注文,製品 WHERE 注文.製品コード=製品.製品コード 注文:日付/製品コード/数量 2011-04-10/P2/120 2011-04-15/P1/100 2011-04-22/P4/50 2011-04-30/P8/80 2011-05-06/P1/100 2011-05-08/P3/70 製品:製品コード/製品名 P1/PC P2/テレビ P3/掃除機 P4/冷蔵庫 P5/エアコン P6/電話機 P7/時計 (注:本サイトでは原問題の表を文字表記に変換しています)

出典:平成24年度 春期 基本情報技術者試験 午前 問30

正解:ウ

解説

この SQL 文は注文表と製品表を製品コードで結合(等結合)し,製品名と数量を取り出します。注文表の各行について製品表に一致する製品コードがあるかを確認すると,P2→テレビ120,P1→PC100,P4→冷蔵庫50,P8→該当なし(製品表にP8が存在しないため結果から除外),P1→PC100(2件目),P3→掃除機70となります。したがって結果は5行になり,テレビ120,PC100,冷蔵庫50,PC100,掃除機70という組合せになります。

選択肢ごとの解説

  • 誤り。注文表の2件目のP1(PC,100)の行が抜け落ちており,結果が4行になっていますが,実際には5行になります。
  • 誤り。PCの数量が200になっていますが,これは2件のPC注文(各100)を合算してしまった誤りで,SQLはグループ化していないため合算されません。
  • 正しい。製品コードが一致する5件(P2,P1,P4,P1,P3)がそれぞれ製品名と数量の組として抽出され,一致しないP8の行は結果から除外されます。
  • 誤り。この SQL は等結合であり,一致しない行(P8)はNULLとして結果に残るのではなく,そもそも結果から除外されます。
基本情報技術者の過去問を演習モードで解く