在一列中存储不同值时对搜索结果进行分组

时间:2011-08-23 23:26:16

标签: php mysql

我必须根据存储在MySQL表中的一些数据构建一个报告,一切都很顺利,直到我注意到我们在一列中存储了多个值。这就是我的意思:

FIELDS: ID | CHOICES | AGE
VALUES: 1 | apple|orange|pear | 23
VALUES: 2 | peach|orange|pineapple|pear | 29

我需要搜索该表,找出有多少用户喜欢梨,有多少像橙子等。 它将是该值的GROUP BY,但是如何将CHOICE列的内容分解为单个字段,以便我可以搜索并对它们进行分组?这段代码是从PHP文件执行的,所以我也可以根据需要预先处理数据,但如果可能的话我宁愿在查询中做所有事情。

提前多多感谢。

2 个答案:

答案 0 :(得分:1)

如果您无法更改数据库设计,我建议您在PHP中执行此操作。

循环结果:

foreach $result
    foreach $fruits
        $fruit_array[$fruit] = $id

然后你有一个由水果索引的数组,其中一组id为值

但如果可能,请更改数据库设计

答案 1 :(得分:0)

前言:我是一个更好的HBase桌面设计师。

遵循NullUserException的注释,您肯定会受益于更好的表架构。类似的东西:

选择
USER_ID | CHOICE

用户
USER_ID | AGE

从这里你可以联系一个用户将他/她的年龄和选择联系起来,或者做一个计数来看看有多少X岁的人选择了水果Y.

但是,要解决您手头的问题,您必须选择*然后手动计算每个用户的偏好。使用类似基数的方法不会使这太糟糕。 (编辑:请参阅Galen对PHP代码的回答。)