2009-01-28 144 views
0

我有如下表:如何汇总列从两个结果集在MySQL

评级:

ID | post_id | rating_type 

的rating_type字段是“拇指向上”或“拇指向下”。我想得到一个结果集,告诉我最高评分的帖子是什么。以下查询为我提供了一个结果集,其中包含每个唯一post_id的最多投票数。

SELECT COUNT(post_id) as number_up, post_id FROM wp_sp_post_ratings WHERE rating_type = 'thumb-up' GROUP BY post_id 

太棒了!我可以做类似的拇指向下评级类型。但是,我需要的是获得总评分,其中每个拇指向下提供一个点,每个拇指向下给出一个负面点。然后,我需要按总评分排序。所以说,我们有以下几点:

后1有3张选票和2倒票 后2有14张选票和33向下票 后3有4向上票,0向下票

我d喜欢看到如下结果集:

post_id | total_rating 
3 | 4 
1 | 1 
2 | -19 

我不知道该怎么做。我一直对我的文档和Google的头撞了大约2个小时,所以我希望SO可以成为我的救星。

回答

4
SELECT SUM(CASE WHEN rating_type = 'up' THEN 1 WHEN rating_type = 'down' THEN -1 END CASE) 
FROM posts 
GROUP BY post_id 

P. S.最好将票数上下调整为数字(+1和-1)而不是字符串。

+0

正是我所需要的。非常感谢! – nickohrn 2009-01-28 20:20:56

0

最初,为什么不直接竖起拇指为1,拇指向下直到-1? Quassnoi的案件陈述更快....

+0

这两个提示都太迟了...... – 2009-01-28 20:23:02