1

ベンチマーク データベースでは、アンケートの質問を 1 つのテーブルに格納し、それらの質問に対する参加者の回答を別のテーブルに格納します。毎年、新しいテーブルが作成され、何年にもわたって質問 ID が変更されました。そのため、質問 ID が一致しなくなったため、すべての年にわたるすべての回答を結合した 1 つのテーブルを生成することが困難になりました (たとえば、2010 年の質問「材料費」の質問 ID は「bp2.12」でしたが、2011 年のベンチマークでは新しい問題が追加されたため、問題ID「bp2.16」になりました)。ただし、質問テーブルには、古い質問 ID へのマッピングも格納されます。

正しいマッピングを使用して、2 年間のすべての参加者のすべての応答を含むテーブルを生成する SQL クエリ (MS Access SQL) はどれですか?

ベース テーブル (サンプル データあり):

  • tbl_questions_2010: ID | 質問文 | 単位
    • bp2.12 | 材料費 | 米ドル
    • bp2.13 | 人件費 | 米ドル
    • bp2.14 | 正社員 | 工数
    • ...
  • tbl_questions_2011: ID | 質問文 | ユニット | 2010_ID
    • bp2.16 | 材料費 | 米ドル | bp2.12
    • bp2.20 | 人件費 | 米ドル | bp2.13
    • bp2.21 | 正社員 | 正社員 | bp2.14
  • tbl_responses_2010: ID | 質問ID | 参加者 ID | 応答
    • 1 | bp2.12 | 1 | 2,289,990
    • ...
  • tbl_responses_2011: ID | 質問ID | 参加者 ID | 応答
    • 78 | bp2.16 | 3 | 723,091
    • ...
  • tbl_participants: ID | 参加者名
    • 1 | 株式会社アクメ
    • 3 | ジョン・ドゥ・グループ

望ましい結果 (サンプル データを使用):

  • tbl_result: 質問 ID | 年 | 質問文 | 参加者名 | 応答
    • bp2.16 | 2012年 | 材料費 | アクメ株式会社 | 2,289,990
    • bp2.16 | 2010年 | 材料費 | ジョン・ドゥ・グループ | 723,091
    • ...

これは私がこれまでに持っているものです:

SELECT tbl_responses_2010.question_ID_2010 AS Question_ID, "2010" as Year, tbl_questions_2010.questiontext, tbl_participants.participant_name,  tbl_responses_2010.response
FROM tbl_responses_2010, tbl_questions_2010, tbl_participants
WHERE tbl_responses_2010.participant_ID=tbl_participants.participant_ID AND tbl_questions_2010.question_ID_2010=tbl_responses_2010.question_ID_2010

UNION 

SELECT tbl_responses_2011.question_ID_2011 AS Question_ID, "2011" as Year, tbl_questions_2011.questiontext, tbl_participants.participant_name,  tbl_responses_2011.response
FROM tbl_responses_2011, tbl_questions_2011, tbl_participants
WHERE tbl_responses_2011.participant_ID=tbl_participants.participants_ID AND tbl_questions_2011.question_ID_2011=tbl_responses_2011.question_ID_2011

ORDER BY Question_ID, response, Year;

これにより、2011 年と 2011 年のすべての回答を結合したテーブルが得られますが、2010 年の質問の質問 ID が間違っています。フィールド tbl_questions_2011.2010_ID を使用してそれらをマッピングする方法がわかりません

4

0 に答える 0