查找每个帖子SQL QUERY的总用户发布

时间:2013-01-20 09:51:56

标签: sql

我有一个包含以下两个表的数据库,成员,POSTS我正在寻找一种方法来计算用户有多少帖子。

enter image description here
来源:http://i.stack.imgur.com/FDv31.png

我尝试了以下SQL命令的许多变体,但没有任何成功。而不是显示单个用户的帖子数量,它显示一行,所有帖子都作为计数。

最后我想要这样的东西

enter image description here
来源:http://i.stack.imgur.com/EbaEj.png

3 个答案:

答案 0 :(得分:3)

可能是我在这里遗漏了一些东西,但这个查询似乎能给你想要的结果:

SELECT member.ID,
       member.Name,
       (SELECT COUNT(*) FROM Posts WHERE member.ID = Posts.user_id) AS total
FROM   member;

我已将评论从查询中删除,因为对于要计算的评论组,您希望在该列中返回哪些评论并不明显。

查看SQL Fiddle演示here

修改
抱歉,误解了您的问题:-)此查询将正确地返回所有评论,以及发布评论的人以及此人发表的评论总数:

SELECT Posts.ID,
       member.Name,
       (SELECT COUNT(*) FROM Posts WHERE member.ID = Posts.user_id) AS total,
       Posts.comment
FROM   Posts
INNER JOIN member ON Posts.user_id = member.ID
GROUP BY Posts.ID, member.Name, member.ID, Posts.comment;

查看更新的SQL Fiddle演示here

答案 1 :(得分:1)

您可以使用子查询来计算每个成员的总帖子数:

select  m.ID
,       m.Name
,       coalesce(grp.total, 0)
,       p.comment
from    member m
left join
        posts p
on      p.user_id = m.id
left join
        (
        select  user_id
        ,       count(*) as total
        from    posts
        group by
                user_id
        ) grp
on      grp.user_id = m.id

答案 2 :(得分:1)

select 
   a.id
   , a.name
   , count(1) over (partition by b.user_id) as TotalCountPerUser
   , b.comment
from member a join post b 
on a.id = b.user_id