経営情報システム R07年度 第12問

第12問

あるメーカーでは、カスタマーサポートや新製品のプロモーションなどのため に、Web サイトを通じて顧客にユーザ登録と購入した商品の登録を働きかけてい る。以下に示す「登録ユーザ」表は、ユーザ登録済みの顧客に関するデータを表し、 また「商品登録管理」表は、ユーザ登録済みの顧客が自身で登録した、購入済み商品 に関するデータを表している。なお、ユーザ登録をしている顧客の中には、商品登 録を行っていない者もいる。 登録ユーザ 顧客ID アカウント名 氏名 C0001 keizai.ichiro 経済 一郎 C0002 seisaku.jiro 政策 次郎 C0003 zaimu.saburo 財務 三郎 C0004 kaikei.haruka 会計 春香 C0005 keiei.natsumi 経営 夏美 C0006 un-ei.akiko 運営 秋子 C0007 homu.fuyumi 法務 冬美 … … … 商品登録管理 管理番号 顧客ID 商品コード 製造番号 C0004 P102 2001U C0003 P103 3020A C0004 P102 2012X C0006 P101 1098Z C0001 P101 1051B C0007 P104 4035K C0006 P103 3077C C0004 P102 2073Y C0006 P103 3099G C0004 P101 1022S … … … …  この2 つのデータから、登録ユーザごとの商品登録状況を確認するために、次に 示す「購入商品登録状況」表を得ることを考える。 購入商品登録状況 顧客ID アカウント名 商品コード 登録台数 C0001 keizai.ichiro P101 C0002 seisaku.jiro C0003 zaimu.saburo P103 C0004 kaikei.haruka P102 C0004 kaikei.haruka P101 C0005 keiei.natsumi C0006 un-ei.akiko P103 C0006 un-ei.akiko P101 C0007 homu.fuyumi P104 … … … …  以下のSQL 文の空欄①と②に入る語句の組み合わせとして、最も適切なものを 下記の解答群から選べ。ただし、「購入商品登録状況」表の空欄は、データがないこ とを意味する。 【SQL 文】 SELECT  登録ユーザ. 顧客ID,  登録ユーザ. アカウント名,  商品登録管理. 商品コード,  COUNT(商品登録管理. 商品コード) AS 登録台数 FROM  登録ユーザ 商品登録管理   ON 登録ユーザ. 顧客ID = 商品登録管理. 顧客ID GROUP BY ORDER BY 登録ユーザ. 顧客ID ASC,登録台数 DESC;

  1. ①:INNER JOIN ②:登録ユーザ. 顧客ID,商品登録管理. 商品コード
  2. ①:INNER JOIN ②:登録ユーザ. 顧客ID,登録台数
  3. ①:RIGHT OUTER JOIN ②:登録ユーザ. 顧客ID
  4. ①:LEFT OUTER JOIN ②:登録ユーザ. 顧客ID,商品登録管理. 商品コード
  5. ①:LEFT OUTER JOIN ②:登録ユーザ. 顧客ID,登録台数
▼ 解答・解説を見る

正解:全員正解

解答:全員正解

「購入商品登録状況」表は、商品登録のない顧客(C0002・C0005 など)も結果に残している点が要点である。

空欄①(結合)について:商品登録の有無にかかわらず「登録ユーザ」表の全行を残すには、左表(登録ユーザ)を基準とする LEFT OUTER JOIN が必要。INNER JOIN では商品登録のない顧客が脱落し、RIGHT OUTER JOIN では基準が逆になる。したがって①は LEFT OUTER JOIN が妥当。

空欄②(GROUP BY)について:SELECT 句で集約していない列「登録ユーザ.顧客ID/登録ユーザ.アカウント名/商品登録管理.商品コード」の3列すべてを GROUP BY に指定する必要がある。しかし選択肢の②は、いずれも「アカウント名」を欠く、あるいは集約結果である「登録台数」を GROUP BY に含めるなど、SQL として正しく成立する組合せが存在しない

各選択肢を見ると、①が適切(LEFT OUTER JOIN)なエ・オも、②の GROUP BY 句が不適切で正答たり得ない。結果として適切な選択肢が成立せず、全員正解とされた。

#データベース#Web・インターネット

← 経営情報システムの一覧へ戻る