假定不能使用子查询。(其实在不使用子查询的时候,无论是思路还是表述都要清晰的多)获取“最多人填写的十项” select other_id, other_text, count(*) as cnt from AA group by other_text order by cnt desc limit 10获取最大的其他项id select max(other_id) as other_id from AA 注意,由于每次可能出现的选项是不同的,但是又必须保证新增的其他项有唯一的id。这样才可以进行日后的统计。所以表单中的“其他”应具有全新的id(max(other_id)+1)提交后应检查非空的“其他”是否已在AA表中存在,若存在则应修改other_id为相应值其他就好象没有什么问题了
select other_id, other_text, count(*) as cnt from AA group by other_text order by cnt desc limit 10获取最大的其他项id
select max(other_id) as other_id from AA
注意,由于每次可能出现的选项是不同的,但是又必须保证新增的其他项有唯一的id。这样才可以进行日后的统计。所以表单中的“其他”应具有全新的id(max(other_id)+1)提交后应检查非空的“其他”是否已在AA表中存在,若存在则应修改other_id为相应值其他就好象没有什么问题了
对于QQ表,每条记录是一份问卷,里面有很多条问题,当然下面还有选项;而且表现形式各有不同,不定哪一条问题含有“其他可填”这种
对于AA表,每条记录是一份答卷,这第N条题的“其他可填”信息参杂在其中,并且可能不仅仅是这条题,还有其他,所以很难用计数器select count()也基本否决
因为上面的原因,假设一份卷有100条题都是这种形式,select100次也是不恰当的
目前倾向一次select所有答卷,用php数组函数边计算边输出当然这些都是基于上述表的结构而定,或者有人能提出新的表结构给我开阔一下思路?
问题二:你的国籍是?
//....那么在QQ表里是如何表示的?
楼主最好把QQ表里一条具有代表性的记录直接贴出来,再讨论一下如何改表结构吧
例如
id:
title:
owner:
content:
<q1>你的职业是?<type>4</type><s1>学生</s1><s2>蓝领(工人)</s2>
<s3>白领(办公室)</s3>
<s4>农民</s4></q1>
还有其他一些字段,与这个议题无关就不多写了其中type=4表示单选并且最后含有“其他可填”选项,可能还有其他tags,这里不敷述
php根据这个type自动在最后添加一个input.text可以提一些你所设想的表结构,如果我之前已经考虑过的,我会告诉你为什么弃用
如果我未想过的,我会考虑使用你提出的结构注意:这个表是多用户的
<item loop=123>aaa</item>
<item loop=101>bbb</item>
<item loop=99>ccc</item>
<item loop=70>ddd</item>
<item loop=60>eee</item>
......
<item loop=0>xxx</item>
<item loop=0>yyy</item>
<item loop=0>zzz</item>
</otheroptions>LOOP为填写频率,第一次为0,否则+1,
于是把问题的解决转向对这个xml文件的操作。(添加、修改)仅供参考。