平成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
- アテレビ:120,PC:100,冷蔵庫:50,掃除機:70
- イテレビ:120,PC:200,冷蔵庫:50,掃除機:70
- ウテレビ:120,PC:100,冷蔵庫:50,PC:100,掃除機:70
- エテレビ:120,PC:100,冷蔵庫:50,NULL:80,PC:100,掃除機:70
正解:ウ
解説
この 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として結果に残るのではなく,そもそも結果から除外されます。