平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。
設問2 〔SQL分の設計〕について,(1)~(3)に答えよ。
(2) SQL4及びSQL5,指定した注文について,注文されたセット商品を構成する単品商品の合計数を求めるSQL文です。SQL4及びSQL5の実行結果が同じにように, h に入れる適切な字句を答えよ。
問題の対象となっているのは、以下の内容である。
〔SQL文の設計〕
Fさんが,案1と案2のそれぞれについて設計した主なSQL文を表4に示す。
注記 hvは,ホスト変数を表す。
SQL4とSQL5の違いを確認する。
FROM句の結合している表が異なる。
SQL4 注文明細、商品、セット商品構成
SQL5 注文明細、セット商品、セット商品構成
それでは、2つのテーブルを確認する。
図2 案1の”商品”テーブルの構造
図3 案2の”単品商品”テーブル及び”セット商品”テーブルの構造
そして、サンプルデータ
商品テーブル
セット商品テーブル
セット商品構成テーブル
勘違いしないように、もう一度問題を確認すると、「注文されたセット商品を構成する単品商品の合計数を求めるSQL文」である。
注文されたセット商品が"SS001","SS002"の場合は、50+40+40+30+20+20=200ということ。
SQL4の結果
hには、SUM()関数が使われているの、どのテーブルのどの項目を合計しているかを回答することになる。表の別名が定義されているので、それを使って表す。
【回答】
h : K.構成数
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問3 テーブルの設計及びSQLの設計に関する次の記述を読んで,設問1~3に答えよ。
設問2 〔SQL分の設計〕について,(1)~(3)に答えよ。
(2) SQL4及びSQL5,指定した注文について,注文されたセット商品を構成する単品商品の合計数を求めるSQL文です。SQL4及びSQL5の実行結果が同じにように, h に入れる適切な字句を答えよ。
問題の対象となっているのは、以下の内容である。
〔SQL文の設計〕
Fさんが,案1と案2のそれぞれについて設計した主なSQL文を表4に示す。
表4 案1と案2について設計した主なSQL文(未完成)
案
| SQL | SQL文 |
---|---|---|
案1 | SQL1 | SELECT M.商品番号,P.社内原価,P.化粧箱番号 FROM 注文明細 M,商品 P WHERE M.商品番号 = P.商品番号 AND M.注文番号 = :hv |
案2 | SQL2 | SELECT M.商品番号,T.社内原価,S.化粧箱番号 FROM 注文明細 M f JOIN 単品商品 T ON M.商品番号 = T.商品番号 f JOIN セット商品 S ON M.商品番号 = S.商品番号 |
案2 | SQL3 | SELECT M.商品番号,T.社内原価,CAST(NULL AS INT) 化粧箱番号 FROM 注文明細 M g JOIN 単品商品 T ON M.商品番号 = T.商品番号 WHERE M.注文番号 = :hv UNION ALL SELECT M.商品番号,CAST(NULL AS INT) 社内原価,S.化粧箱番号 FROM 注文明細 M g JOIN セット商品 S ON M.商品番号 = S.商品番号 WHERE M.注文番号 = :hv |
案1 | SQL4 | SELECT K.単品.商品番号,SUM( h )
FROM 注文明細 M,商品 P,セット商品構成 K
WHERE M.注文番号 = :hv AND M.商品番号 = P.商品番号
AND P.商品番号 = K.セット商品番号
GROUP BY K.単品商品番号
|
案2 | SQL5 | SELECT K.単品.商品番号,SUM( h )
FROM 注文明細 M,セット商品 S,セット商品構成 K
WHERE M.注文番号 = :hv AND M.商品番号 = S.商品番号
AND P.商品番号 = K.セット商品番号
GROUP BY K.単品商品番号
|
SQL4とSQL5の違いを確認する。
FROM句の結合している表が異なる。
SQL4 注文明細、商品、セット商品構成
SQL5 注文明細、セット商品、セット商品構成
それでは、2つのテーブルを確認する。
商品(商品番号,商品名,商品説明,写真,販売単価,表示順,単品区分,
社内原価,化粧箱番号,詰合せ日数)
図2 案1の”商品”テーブルの構造
単品商品(商品番号,商品名,商品説明,写真,販売単価,表示順,社内原価)
セット商品(商品番号,商品名,商品説明,写真,販売単価,表示順,
化粧箱番号,詰合せ日数)
図3 案2の”単品商品”テーブル及び”セット商品”テーブルの構造
そして、サンプルデータ
商品テーブル
商品番号
|
商品名
|
…
|
---|---|---|
TS001 | たまご茸 | … |
TS002 | へび苺 | … |
SS001 | 山菜セット(松) | … |
SS002 | 山菜セット(竹) | … |
セット商品テーブル
商品番号
|
商品名
|
…
|
---|---|---|
SS001 | 山菜セット(松) | … |
SS002 | 山菜セット(竹) | … |
SS003 | 山菜セット(梅) | … |
SS004 | 山菜セット(桜) | … |
セット商品構成テーブル
セット商品番号
|
単品商品番号
|
構成数
|
---|---|---|
SS001 | TS001 | 50 |
SS001 | TS002 | 40 |
SS001 | TS003 | 40 |
SS002 | TS001 | 30 |
SS002 | TS003 | 20 |
SS002 | TS004 | 20 |
勘違いしないように、もう一度問題を確認すると、「注文されたセット商品を構成する単品商品の合計数を求めるSQL文」である。
注文されたセット商品が"SS001","SS002"の場合は、50+40+40+30+20+20=200ということ。
SQL4の結果
単品商品番号
|
構成数
|
---|---|
TS001 | 80 |
TS002 | 40 |
TS003 | 60 |
TS004 | 20 |
hには、SUM()関数が使われているの、どのテーブルのどの項目を合計しているかを回答することになる。表の別名が定義されているので、それを使って表す。
【回答】
h : K.構成数
コメント
コメントを投稿