MS Access SQL:在查询中映射不同的ID?

时间:2013-10-29 18:42:27

标签: sql database ms-access-2010

基准数据库将问卷问题存储在一个表格中,参与者在另一个表格中回答这些问题。每年都会创建新表,多年来,问题ID已更改。因此,很难在所有年份生成一个所有响应的连接表,因为问题ID不再匹配(例如,在2010年,问题“材料成本”有问题ID“bp2.12”但在2011年基准测试中研究它成为问题ID“bp2.16”,因为新的问题被添加)。但是,问题表还会存储旧问题ID的映射。

什么SQL查询(MS Access SQL)使用正确的映射生成一个表,其中包含所有参与者的所有响应两年?

基表(包含样本数据):

  • tbl_questions_2010:ID | questiontext |单元
    • bp2.12 |材料成本| USD
    • bp2.13 |人员费用USD
    • bp2.14 | FTE | FTE
    • ...
  • tbl_questions_2011:ID | questiontext |单位| 2010_ID
    • bp2.16 |材料成本|美元| bp2.12
    • bp2.20 |人员费用美元| bp2.13
    • bp2.21 | FTE | FTE | bp2.14
  • tbl_responses_2010:ID | question_ID | participant_ID |响应
    • 1 | bp2.12 | 1 | 2289990
    • ...
  • tbl_responses_2011:ID | question_ID | participant_ID |响应
    • 78 | bp2.16 | 3 | 723091
    • ...
  • tbl_participants:ID | PARTICIPANT_NAME
    • 1 | ACME LTD。
    • 3 | John Doe Group

期望的结果(带有样本数据):

  • tbl_result:question_ID |一年| questiontext | participant_name |响应
    • bp2.16 | 2012 |材料成本| ACME Ltd. | 2289990
    • bp2.16 | 2010 |材料成本| John Doe Group | 723091
    • ...

这是我到目前为止所做的:

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来映射它们

0 个答案:

没有答案