Php MySQL按另一个表的和排序
我目前在mysql中有2个表评论和评论评分 评语评分具有以下结构:Php MySQL按另一个表的和排序,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我目前在mysql中有2个表评论和评论评分 评语评分具有以下结构: +------------+ | Field | +------------+ | id | | comment_id | | user_id | | positive | | created_at | +------------+ 字段正值为1或-11为正值(向上投票)和-1为负值(向下投票) 我有一个最新的问题,它会让我在评论中获得最高的评价: SELECT *, COUNT(comme
+------------+
| Field |
+------------+
| id |
| comment_id |
| user_id |
| positive |
| created_at |
+------------+
字段正值为1或-11为正值(向上投票)和-1为负值(向下投票)
我有一个最新的问题,它会让我在评论中获得最高的评价:
SELECT *, COUNT(comment_rating.id) AS rating_count FROM comments LEFT JOIN comment_rating ON comments.id = comment_rating.comment_id GROUP BY comments.id ORDER BY rating_count DESC
我需要知道如何(使用mysql查询)我能够获得按最佳评级排序的评论;
意思是按照每个评论的评分总和排序
例如:
- 评论X有2张赞成票和4张反对票(总计-2张)
- 注释Y没有投票权(总计0)
- 评论Z有1票(总计1票)
谢谢你juergen d 您的查询几乎完美: 这是一个稍加修改的版本,可以正确订购:
SELECT comments.id,
COUNT(comment_rating.id) AS rating_count,
COALESCE(SUM(positive),0) as rating
FROM comments
LEFT JOIN comment_rating ON comments.id = comment_rating.comment_id
GROUP BY comments.id
ORDER BY rating DESC
这样,如果该行不存在,它将被设置为零而不是空,并且将正确排序。谢谢juergen d 您的查询几乎完美: 这是一个稍加修改的版本,可以正确订购:
SELECT comments.id,
COUNT(comment_rating.id) AS rating_count,
COALESCE(SUM(positive),0) as rating
FROM comments
LEFT JOIN comment_rating ON comments.id = comment_rating.comment_id
GROUP BY comments.id
ORDER BY rating DESC
这样,如果行不存在,它将被设置为零而不是空,并且将正确排序。使用
SUM
而不是COUNT
。使用SUM
而不是COUNT
。