如何获取每个用户的所有帖子?

时间:2012-09-04 22:40:39

标签: php mysql sql join count

我有表users,其中包含有关每个用户的信息。然后是表posts,其中包含有关文章的信息,最后是表user_posts,其中包含以下列:

user_id
post_id
...

我正在尝试获得帖子数量最多的用户图表。我提出了这个问题:

  

选择u.id作为uid,u.name作为uname,          将(up.id)计为up_count   用户作为你JOIN user_posts up up up up.user_id = u.id ORDER BY vcount DESC LIMIT 25

此查询只返回一个用户以及表user_posts中所有行的总计数。

我做错了什么?我需要按照发布每个用户的文章计数来获取25个用户的列表。

提前谢谢

2 个答案:

答案 0 :(得分:3)

您的查询需要GROUP BY子句,因为您使用了COUNT()函数。

SELECT   u.id as uid, 
         u.name as uname, 
         count(up.id) as up_count 
FROM     users as u 
           LEFT JOIN user_posts as up  
              ON up.user_id = u.id 
GROUP BY u.id, u.name
ORDER BY up_count DESC LIMIT 25

您必须按ID对它们进行分组,否则您将为所有记录单个总计数结果。还有一件事,请使用LEFT JOIN,以便即使在帖子中仍然可以看到没有帖子的用户,其得分为0

答案 1 :(得分:1)

SELECT 
    u.id as uid, u.name as uname, count(up.id) as up_count 
FROM users as u 
    JOIN user_posts as up ON up.user_id = u.id 
GROUP BY 
    u.id, u.name
ORDER BY 
    vcount 
DESC LIMIT 25