修了試験 2017-01-22実施分 基本情報技術者試験 問27
“注文”表と“製品”表に対して,次のSQL文を実行したときに得られる結果はどれか。 SELECT 製品名,数量 FROM 注文,製品 WHERE 注文.製品コード = 製品.製品コード 〔注文〕 日付|製品コード|数量 2016-04-10|P2|120 2016-04-15|P1|100 2016-04-22|P4|50 2016-04-30|P8|80 2016-05-06|P1|100 2016-05-08|P3|70 〔製品〕 製品コード|製品名 P1|PC P2|テレビ P3|掃除機 P4|冷蔵庫 P5|エアコン P6|電話機 P7|時計
正答3
解説
正解は3です。 このSQL文は、注文表と製品表を製品コードが一致する行どうしで結合し、製品名と数量を取り出します。 この結合は内部結合(等結合)なので、相手の表に一致する行がない行は結果に現れません。 また、GROUP BYがないので集計は行われず、注文1行ごとに結果が1行出ます。 【計算】 2016-04-10のP2はテレビで、数量120です。 2016-04-15のP1はPCで、数量100です。 2016-04-22のP4は冷蔵庫で、数量50です。 2016-04-30のP8は製品表にないので、結果に現れません。 2016-05-06のP1はPCで、数量100です。 2016-05-08のP3は掃除機で、数量70です。 結果は5行になります。 【選択肢別解説】 1:× 2016-05-06のPCの注文(数量100)が抜けています。 同じ製品でも注文ごとに1行ずつ出力されます。 2:× PCを200にまとめていますが、これはGROUP BYとSUMで集計した場合の結果です。 本問のSQL文は集計しません。 3:○ 製品コードが一致する5行が、注文ごとに出力されており、結果と一致します。 4:× P8の行をNULLとして残していますが、これは外部結合の場合の結果です。 等結合では一致しない行は出力されません。 【ポイント】 内部結合では両方の表に一致する行だけが残り、外部結合では片方の表の行をすべて残して足りない列をNULLで埋めます。 製品表のP5〜P7のように、注文されていない製品も結果には現れません。まとめて解く
修了試験 2017-01-22実施分を通しで解く(80問)→