基准数据库将问卷问题存储在一个表格中,参与者在另一个表格中回答这些问题。每年都会创建新表,多年来,问题ID已更改。因此,很难在所有年份生成一个所有响应的连接表,因为问题ID不再匹配(例如,在2010年,问题“材料成本”有问题ID“bp2.12”但在2011年基准测试中研究它成为问题ID“bp2.16”,因为新的问题被添加)。但是,问题表还会存储旧问题ID的映射。
什么SQL查询(MS Access SQL)使用正确的映射生成一个表,其中包含所有参与者的所有响应两年?
基表(包含样本数据):
期望的结果(带有样本数据):
这是我到目前为止所做的:
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来映射它们