MS Access 2007行到记录集中的列
我有一张表,它就像一个问卷类型.. 我的原始表包含450列和212行。 Slno是回答问卷的人的id。MS Access 2007行到记录集中的列
SlNo Q1a Q1b Q2a Q2b Q2c Q2d Q2e Q2f .... Q37c <450 columns>
1 1
2 1 1
3 1
4 1 1
5 1
我不得不为这些数据做分析,例如人数谁是男性(Q1A)和谁拥有一条船(提取的Q2b),即(SELECT * FROM问卷,其中Q1A = 1和提取的Q2b = 1 )..等..更多的组合.. 我设计了MS访问所有的设计工作完美,除了一个主要问题(表列的数量限制为255)。 为了能够输入到访问表我已经插入作为450行和212列(现在我可以输入此访问数据库)。现在,在获取记录时,我希望记录集将结果转换为我想要的形式,以便我不必更改我的算法或逻辑....如何以最少的更改实现此目的?这是我第一次使用Access数据库
您可能可以使用交叉表查询来生成您所期望的内容。你也可以建立一个transpose function。
无论哪种方式,我想你会STIL运行到255列的限制和MS Access使用临时表等
但是,我认为,如果你改变,你会少得多的工作,更好的结果你的桌子的结构。
我认为这就像填充式调查问卷,它主要是多种选择。在这种情况下,而不是记录的结果,我会记录答案的问题
SlNo Q1 Q2
1 B
2 B
3 A
4 A C
5 A
然后,你必须少得多列的工作。并且你查询Q1 ='A'而不是Q1a = 1。
另一种方法是将表格分成几部分(个人,职业等),然后进行连接,并只显示所需的列(以便不超过255列限制)。
的方式做到这一点,处理更多的问题是对人的表,此问题的基本表,并为响应表
Person
SlNo PostalCode
1 90210
2 H0H 0H0
3
Questions
QID, QTitle, QDesc
1 Q1a Gender Male
2 Q1b Gender Female
3 Q2a Boat
4 Q2b Car
Answers
SlNo QID Result
1 2 True
1 3 True
1 4 True
2 1 True
2 3 False
2 4 True
然后,您可以找到通过选择人员问题考生从答案
select * from Person
where SlNo in (
select SlNo from Answers, Questions
where
questions.qid = answers=qid
and
qtitle = 'Q1a'
and
answers.result='True')
and SlNo in (
select SlNo from Answers, Questions
where
questions.qid = answers=qid
and
qtitle = 'Q2a'
and
answers.result='True')
列表我终于得到了解决
- 我创建了两个表中的一个有225列和其他具有225列 (共450列)
-
我创建了一个SQL语句
select count(*) from T1,T2 WHERE T1.SlNo=T2.SlNo
,并加入条件是什么,我想
它之后即将正确这个 ..
该数据库是由其他工作人员在一开始输入数据库,但只是扔掉一周的工作并不好,所以不得不坚持这种设计......致命的是下周..现在它工作:) :)
这是一次性的,还是将在未来使用?如果是后者,那么我肯定会确保以适当的格式收集数据,以便您不必再次修复。 – 2011-06-12 21:20:38