第10問
ある中小企業における今週のA部門とB部門の販売実績は、販売実績表A、販売 実績表Bのとおりであった。UNION 句を用いて2 つの表を1 つにまとめたい。 そのためのSQL 文として、最も適切なものを下記の解答群から選べ。 販売実績表A 取引ID 商品番号 商品名 販売単価 販売数量 A001 100 バナナ 100 1 A002 101 リンゴ 120 1 A003 103 メロン 300 1 A004 ・・・ ・・・ ・・・ ・・・ 販売実績表B 取引ID 商品番号 商品名 販売単価 販売数量 B001 100 バナナ 100 1 B002 101 リンゴ 130 2 B003 105 ブドウ 140 2 B004 ・・・ ・・・ ・・・ ・・・
- ア SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 FROM 販売実績表A UNION FROM 販売実績表B;
- イ SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 FROM 販売実績表A UNION SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 FROM 販売実績表B;
- ウ SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 FROM 販売実績表A,販売実績表B UNION SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 ;
- エ SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 UNION FROM 販売実績表A,販売実績表B;
- オ SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 UNION SELECT 取引ID,商品番号,商品名,販売単価*販売数量 AS 売上高 FROM 販売実績表A,販売実績表B;
▼ 解答・解説を見る
正解:イ
解答:イ
UNIONは2つのSELECT文の結果を縦に結合する集合演算子。構文は「SELECT … FROM 表A UNION SELECT … FROM 表B」のように、UNIONの前後それぞれが完結したSELECT文(列数・データ型が一致)である必要がある。
- ア(×):UNIONの後ろが「UNION FROM 販売実績表B」となっており、SELECT句を欠いた不正な構文。
- イ(○):表Aのselect文と表Bのselect文をUNIONで結合した正しい構文。各SELECTで売上高(販売単価*販売数量)を算出し、両部門の実績を1つにまとめられる。
- ウ(×):前半のFROMで両表をカンマ結合(直積)し、後半のSELECTにFROMがない不正な構文。
- エ(×):FROMの前にUNIONがあり、SELECT文が完結していない不正な構文。
- オ(×):1つ目のSELECTにFROMがなく、UNIONの前後が完結したSELECT文になっていない。
よって イ。