修了試験 2018-12-09実施分 基本情報技術者試験 問29
“注文”表と“製品”表に対して,次の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です。 このSQL文は、注文表と製品表を、製品コードが等しい行どうしで結合(内部結合)し、製品名と数量を取り出します。 GROUP BYや集計関数を使っていないので、集計はされず、結合できた注文の行がそのまま1行ずつ出力されます。 【結合の過程】 2011-04-10の注文はP2なので、「テレビ,120」になります。 2011-04-15の注文はP1なので、「PC,100」になります。 2011-04-22の注文はP4なので、「冷蔵庫,50」になります。 2011-04-30の注文はP8ですが、製品表にP8がないので結合されず、出力されません。 2011-05-06の注文はP1なので、「PC,100」になります。 2011-05-08の注文はP3なので、「掃除機,70」になります。 【選択肢別解説】 1:× 2011-05-06の「PC,100」が抜けています。 同じ製品でも、注文ごとに別の行として出力されます。 2:× PCの数量を合計して200にしていますが、SQL文にSUMやGROUP BYはありません。 集計は行われないので誤りです。 3:○ 結合できた5件の注文が、それぞれ1行ずつ製品名と数量の組みで出力されています。 SQL文の実行結果と一致します。 4:× P8の注文をNULLとして出力していますが、これは外部結合の場合の結果です。 WHERE句で結合条件を指定した内部結合では、相手のない行は出力されません。 【ポイント】 WHERE句による結合は内部結合で、両方の表に一致する行がある組みだけが結果になります。 相手のない行も残したいときは、LEFT OUTER JOINなどの外部結合を使います。まとめて解く
修了試験 2018-12-09実施分を通しで解く(80問)→