過去問解きまくり研究所 ホーム

平成24年度 春期 午前 問30

データベース

SQLに関する問題

“注文”表と“製品”表に対して,次の SQL 文を実行したときに得られる結果はどれか。

SELECT 製品名, 数量 FROM 注文, 製品
     WHERE 注文.製品コード = 製品.製品コード
〔注文〕
日付製品コード数量
2011-04-10P2120
2011-04-15P1100
2011-04-22P450
2011-04-30P880
2011-05-06P1100
2011-05-08P370
〔製品〕
製品コード製品名
P1PC
P2テレビ
P3掃除機
P4冷蔵庫
P5エアコン
P6電話機
P7時計
〔選択肢の4つの結果表(いずれも列は 製品名・数量)〕
 ア  テレビ 120 / PC 100 / 冷蔵庫 50 / 掃除機 70                         (4行)
 イ  テレビ 120 / PC 200 / 冷蔵庫 50 / 掃除機 70                         (4行)
 ウ  テレビ 120 / PC 100 / 冷蔵庫 50 / PC 100 / 掃除機 70               (5行)
 エ  テレビ 120 / PC 100 / 冷蔵庫 50 / NULL 80 / PC 100 / 掃除機 70    (6行)
答えと解説を見る

✓ これが正解ウ(上記ウの結果表)

解説

両方の表にある製品コードだけが行として残ります。

この SQL 文は二つの表を並べて書いたうえで、注文の側の製品コードと製品の側の製品コードが同じ行どうしを組にする、という条件を付けています。ですから、片方にしか現れない値を持つ行は相手が見つからず、結果から落ちます。注文の側は6行ありますが、そのうち一つは相手の表に同じ値が無いので落ち、残るのは5行です。また、同じ値が2回現れる行は、それぞれが別々に相手と組になるので、まとめられずに2行のまま残ります。取り出す列は製品名と数量の二つだけです。判定の軸は、相手の見つからない行をきちんと落としているかと、同じ値で組になった行をひとまとめにしたり足し合わせたりしていないかの二点です。

ほかの選択肢はなぜ違うのか

出典:平成24年度 春期 基本情報技術者試験 午前 問30(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)