这个主题似乎是一个很受欢迎的主题,并且在相关职位的数量上肯定已经饱和,但是,我已经从事了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/

10-09 23:13