我有一个论坛,我想找到最受欢迎的用户。最受用户喜爱的帖子和评论,也是由最多的帖子和评论来定义的。 最喜欢的用户喜欢(order 1),大多数帖子(order 2)and 最多评论(order 3)是最流行的。同样的逻辑适用于下一个(第二)最受欢迎的用户。选择喜欢,帖子和评论最热门的用户
所以我有3个表:
职位表
id user_id likes
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 1
7 1 0
8 2 0
9 2 2
10 2 0
11 2 0
12 3 0
13 3 0
14 4 0
15 4 10
意见表
id user_id likes
1 1 0
2 1 1
3 1 1
4 1 0
5 2 0
6 2 2
7 2 1
8 4 1
9 4 0
用户表
id name
1 John
2 Adam
3 Maggie
4 Steve
喜欢栏包含其他用户在各自帖子(行)上给出的喜欢。 我想:
SELECT DISTINCT c.id, c.name,
SUM(a.likes), SUM(b.likes), (SUM(a.likes) + SUM(b.likes)) as popular,
COUNT(a.id) as mostp, COUNT(b.id) as mostc
FROM posts as a, comments as b, users as c
WHERE a.user_id=b.user_id AND a.user_id=c.id AND b.user_id=c.id
GROUP BY a.user_id, b.user_id ORDER BY popular DESC, mostp DESC, mostc DESC
显然,这是不行的,因为如果你测试查询并让更多喜欢(和)低于预期。
这里是实况查询 http://sqlfiddle.com/#!2/08900/3
把你的数据(或其子集)在[小提琴](http://sqlfiddle.com),所以我们这些没有获得MySQL能够帮助你。 – hd1 2013-05-11 18:33:37
你可以发布你想要的输出吗 – 2013-05-11 18:43:01
所需的输出结果是从SUM中推算出的结果与表中的结果完全一致。错误的产出(如现在)以笛卡尔产品结束。 – Ricardus 2013-05-11 18:54:08