这个每次提交都要检测,真的是挺麻烦的。
如果是问题和答案分开两个表,一个调查页面N个问题,不可能一两次SELECT就可以从表中拿出问题和选项。问题和选项要是放在一个表里,一次性取出来之后还要去掉不要的选项,记录多了也是个麻烦。。

解决方案 »

  1.   

    假定不能使用子查询。(其实在不使用子查询的时候,无论是思路还是表述都要清晰的多)获取“最多人填写的十项”
    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为相应值其他就好象没有什么问题了
      

  2.   

    应该把填写的选项也存在表中,设置一个字段作为计数器记录它被填写的次数(可以是额外的一个表,也可以放在QQ表中并以另一个字段标示)那么当用户提交时,根据用户的选择更新计数器,如果用户还是手填的,其实要不要检测都没关系,直到到数据库里判断一下,没有则插入记录,有则计数器加一当下一个用户访问时,就直接从表中获取“最多人填写的十项”而不需要总是计算一下最后提醒lz,类似的功能估计不会对“最多人填写”要求非常准确,尤其是答卷不断增加的情况下,多计一次少计一次关系都不大,不能因为一味追求准确牺牲性能
      

  3.   

    计数器的想法之前有过,不过是最早被否决的,因为表的结构令计数器很难生成说明一下
    对于QQ表,每条记录是一份问卷,里面有很多条问题,当然下面还有选项;而且表现形式各有不同,不定哪一条问题含有“其他可填”这种
    对于AA表,每条记录是一份答卷,这第N条题的“其他可填”信息参杂在其中,并且可能不仅仅是这条题,还有其他,所以很难用计数器select count()也基本否决
    因为上面的原因,假设一份卷有100条题都是这种形式,select100次也是不恰当的
    目前倾向一次select所有答卷,用php数组函数边计算边输出当然这些都是基于上述表的结构而定,或者有人能提出新的表结构给我开阔一下思路?
      

  4.   

    表结构看起来挺遭糕...再问一个问题,这些选项都是通用的吗?例如问题一:你的职业是?
        问题二:你的国籍是?
        //....那么在QQ表里是如何表示的?
    楼主最好把QQ表里一条具有代表性的记录直接贴出来,再讨论一下如何改表结构吧
      

  5.   

    不是通用的QQ可能会有一个字段包含所有问题和选项(用类似xml格式)
    例如
    id:
    title:
    owner:
    content:
    <q1>你的职业是?<type>4</type><s1>学生</s1><s2>蓝领(工人)</s2>
    <s3>白领(办公室)</s3>
    <s4>农民</s4></q1>
    还有其他一些字段,与这个议题无关就不多写了其中type=4表示单选并且最后含有“其他可填”选项,可能还有其他tags,这里不敷述
    php根据这个type自动在最后添加一个input.text可以提一些你所设想的表结构,如果我之前已经考虑过的,我会告诉你为什么弃用
    如果我未想过的,我会考虑使用你提出的结构注意:这个表是多用户的
      

  6.   

    how can consider "足彩" and "足球彩票" is the same?????
      

  7.   

    我的想法不是数据库,是xml<otheroptions>
    <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文件的操作。(添加、修改)仅供参考。