基于字段对数据进行分组,并在PHP中提取不同的值

时间:2014-03-19 08:50:08

标签: php mysql

我有一个包含5个字段的数据库:

1. id
2. text (just a phrase in each row)
3. opinion (holds values: positive or negative or neutral)
4. location (where the person who wrote the text was)
5. label (specific to the text)

我想要做的是使用PHP& MySQL获取特定标签的位置,并能够显示该位置有多少正面 - 负面 - 中立的意见。

结果应最终显示如下:

Amsterdam - 2 positive, 3 negative, 5 neutral
.... - #.., #.., #..
and so on..

我想用这些数据绘制条形图,这就是我需要它的原因。我想过使用GROUP BY,但由于某种原因我无法得到我想要的结果。

我该怎么做?

编辑: 样品 sqlfiddle

期望的结果:

Location    |    Positive    |    Negative    |    Neutral
city1               2                1               2
city2               2                1               0

2 个答案:

答案 0 :(得分:3)

select
location,
sum(opinion > 0) as positive,
sum(opinion < 0) as negative,
sum(opinion = 0) as neutral
from
your_table
where label = 'whatever'
group by location

你必须使用sum而不是count,因为它中的opinion = whatever返回true或false(1或0)。

<强>更新

好吧,我的查询完美无缺: sqlfiddle

当然你必须根据你的表格和数据进行调整:

select
location,
sum(opinion = 'Positive') as positive,
sum(opinion = 'Negative') as negative,
sum(opinion = 'Neutral') as neutral
from
results
where label = 'label1'
group by location

答案 1 :(得分:0)

我已根据假设值给出了此查询。

SELECT count(id) 
    FROM table_name 
WHERE opinion="positive" and location="Chennai" and label="php"

此查询将给出给定条件的总计数。当您在php中使用它时,可以将其更改为动态。