我有一个包含以下两个表的数据库,成员,POSTS我正在寻找一种方法来计算用户有多少帖子。
(来源:http://i.stack.imgur.com/FDv31.png )
我尝试了以下SQL命令的许多变体,但没有任何成功。而不是显示单个用户的帖子数量,它显示一行,所有帖子都作为计数。
最后我想要这样的东西
答案 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