2

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

在此处输入图像描述
来源:http: //i.stack.imgur.com/FDv31.png

我尝试了以下 SQL 命令的许多变体,但均未成功。而不是显示单个用户的帖子数,而是显示单行,其中所有帖子作为计数。

最后我想要这样的东西

在此处输入图像描述
来源:http: //i.stack.imgur.com/EbaEj.png

4

3 回答 3

3

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

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

我在查询中留下了评论,因为对于计算的评论组,您希望在该列中返回什么评论并不明显。

在此处查看 SQL Fiddle 演示。

编辑
对不起,误解了您的问题:-) 此查询将正确返回所有评论,以及发布评论的人以及该人发表的评论总数:

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 演示。

于 2013-01-20T10:15:25.343 回答
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
于 2013-01-20T09:56:05.867 回答
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
于 2013-01-20T10:50:38.067 回答