这个主题似乎是一个很受欢迎的主题,并且在相关职位的数量上肯定已经饱和,但是,我已经从事了3天,但无法弄清楚。
我一直在搜寻此网站,还有许多其他网站都对此有潜在的解决方案,其中一些正在执行中,但是我没有得到预期的结果。
这就是我想要做的...
在评论表中选择并计数用户已提交的评论数。
选择并计数用户在reviewVotes表中的上投票数。
GROUP BY用户名(这是两个表中的键-用户名是唯一的,但存在多行)。
对这些COUNT个DESC的总和排序结果集。 (这是我一直在尝试的方法,但是甚至无法执行,因此我现在通过userReviewNum DESC进行订购。)
将结果集限制为前10个。
结果集应该给我排名前10位的评论者,该数字由评论数量加上(+)上投票数得出。
这是我最近执行的一次尝试,但是似乎要乘以userReviewNum * reviewVotesNum,我需要将其添加(但是我在尝试包括SUM命令时都非常失败-实际上非常糟糕,我什至都不好意思显示我的尝试)。
SELECT
reviews.username,
count(reviews.username) userReviewNum,
count(reviewVotes.username) reviewVotesNum
FROM reviews
LEFT JOIN reviewVotes ON reviews.username = reviewVotes.username
GROUP by reviews.username
ORDER BY userReviewNum DESC
LIMIT 0, 10
我尝试使用JOIN和UNION,但似乎无法使它们中的任何一个正常工作。
任何人都可以提供的任何帮助,我们将不胜感激!
更新:
这是结构和一些示例数据。
评论表(还有其他字段,但是很重要):
|用户名|评论|评级| productID |
| foo |这太棒了! | 5 | xxxx |
|酒吧我不喜欢这个| 1 | xxxx |
| foo2 |没关系| 3 | xxxx |
| foo |令人讨厌的1 | xxxx |
reviewVotes表(再次,比此更多的字段,但是这些是重要的字段):
|用户名|选民用户名| productID |
| foo | foo2 | xxxx |
| foo2 | foo | xxxx | (这里的简单想法是,一位用户正在投票另一位用户的帖子)
因此,我需要计算用户在“评论”表中拥有的评论数,然后计算用户在“评论投票”表中拥有的赞数,然后按这两个数字的总和进行排序。
其他更新:
在上面的示例中,这是预期的结果:
用户名| #评论
foo | 2
酒吧1个
foo2 | 1个
用户名| #上投票
foo | 1个
foo2 | 1个
用户名|总和
foo | 3
酒吧1个
foo2 | 2
最佳答案
尝试像这样计算不同的评论和投票:
SELECT
reviews.username,
COUNT(DISTINCT reviews.id) AS userReviewNum,
COUNT(DICTINCT reviewVotes.id) AS reviewVotesNum,
COUNT(DISTINCT reviews.id) + COUNT(DICTINCT reviewVotes.id) AS userRating
FROM
reviews
LEFT JOIN reviewVotes ON reviews.username = reviewVotes.username
GROUP by reviews.username
ORDER BY userRating DESC
LIMIT 10
关于mysql - 不同表上的多个COUNT的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19778950/