平成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 時計

 ア
製品名 数量
テレビ 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文を見ると、1行目の
 SELECT 製品名、数量 FROM 注文、製品
は、“注文”表と“製品”表から、「製品名」「数量」のデータを選択するという意味で、2行目の
 WHERE 注文.製品コード=製品.製品コード
は、選ぶ条件として2つの表の「製品コード」が等しいときとなっています。
“注文”表を上から順に辿っていくと、
1行目の製品コード=P2は“製品”表にあるので選択されます。(テレビ、120)
2行目の製品コード=P1は“製品”表にあるので選択されます。(PC、100)
3行目の製品コード=P4は“製品”表にあるので選択されます。(冷蔵庫、50)
4行目の製品コード=P8は“製品”表にないので選択されません。
5行目の製品コード=P1は“製品”表にあるので選択されます。(PC、100)
6行目の製品コード=P3は“製品”表にあるので選択されます。(掃除機、70)
これで、出力される表は

製品名 数量
テレビ 120
PC 100
冷蔵庫 50
PC 100
掃除機 70
(ウ)になります。
製品名がPCである行が2ヶ所に出現(重複)しますが、重複した行をまとめるという指定がないので、得られる表はこのままです。


キーワード
・SQL

キーワードの解説

戻る 一覧へ 次へ