我有一个包含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
答案 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中使用它时,可以将其更改为动态。