修了試験 2021-01-24実施分 基本情報技術者試験 問28
“注文”表と“製品”表に対して,次のSQL文を実行したときに得られる結果はどれか。 SELECT 製品名,数量 FROM 注文,製品 WHERE 注文.製品コード = 製品.製品コード 注文 日付|製品コード|数量/2020-04-10|P2|120/2020-04-15|P1|100/2020-04-22|P4|50/2020-04-30|P8|80/2020-05-06|P1|100/2020-05-08|P3|70 製品 製品コード|製品名/P1|PC/P2|テレビ/P3|掃除機/P4|冷蔵庫/P5|エアコン/P6|電話機/P7|時計
正答3
解説
正解は3です。 このSQL文は、FROM句に2つの表を並べ、WHERE句で製品コードが等しい行どうしを結び付ける内部結合(等結合)です。 内部結合では、相手の表に対応する行が無い行は結果に現れません。 また、GROUP BYや集計関数が無いので、行がまとめられることもありません。 【結合結果の確認】 2020-04-10のP2は製品表のテレビと結び付き、テレビ、120になります。 2020-04-15のP1はPCと結び付き、PC、100になります。 2020-04-22のP4は冷蔵庫と結び付き、冷蔵庫、50になります。 2020-04-30のP8は製品表に存在しないので、結果から除かれます。 2020-05-06のP1はPCと結び付き、PC、100になります。 2020-05-08のP3は掃除機と結び付き、掃除機、70になります。 【選択肢別解説】 1:× PCの行が1行しかありません。 注文表にはP1の注文が2件あるので、PC、100の行は2行出力されます。 2:× PCの数量が200にまとめられています。 これはGROUP BYとSUMで集計した場合の結果で、このSQL文では行はまとめられません。 3:○ P8の注文を除いた5行が、注文ごとにそのまま出力されており、内部結合の結果と一致します。 4:× 製品名がNULLで数量80の行は、外部結合を使った場合に現れる行です。 内部結合では対応する製品が無いP8の行は出力されません。 【ポイント】 内部結合は「両方の表にある行だけ」、外部結合は「片方にしかない行もNULLを補って残す」と区別します。 集計の指定が無いSQL文では、同じ値の行もそのまま複数出力されます。まとめて解く
修了試験 2021-01-24実施分を通しで解く(80問)→