修了試験 2013-07-28実施分 基本情報技術者試験 問32
"注文"表と"製品"表に対して,次の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|時計
正答3
解説
正解は3です。 WHERE句で二つの表を結合するSQL文の実行結果を問う問題です。 この文は、注文表と製品表の製品コードが一致する行だけを組み合わせる内部結合(等結合)です。 【選択肢別解説】 1:× 2011-05-06のP1(数量100)の行が欠けています。 同じ製品の注文が複数あれば、結合結果にもそれぞれ1行ずつ現れます。 2:× PCの数量が200にまとめられています。 合計するにはSUM関数とGROUP BY句が必要で、この文では集計は行われません。 3:○ 注文表の6行のうち、製品表にないP8の行は結合相手がないので除かれます。 残る5行が、テレビ120、PC100、冷蔵庫50、PC100、掃除機70として得られます。 4:× P8の行がNULLで表示されています。 このように相手のない行を残すのは外部結合であり、内部結合では現れません。 【ポイント】 内部結合では、結合条件に合う相手がない行は結果に現れません。 相手がない行も残したいときは、LEFT OUTER JOINなどの外部結合を使います。まとめて解く
修了試験 2013-07-28実施分を通しで解く(80問)→