【发布时间】:2017-05-03 07:52:31
【问题描述】:
数据库结构如下:
用户
[id] [name] [etc...]
1 Echolot ...
2 AnotherUser ...
帖子
[id] [user_id] [title] [etc...]
1 1 Post1 ...
2 1 Post2 ...
posts_upvotes
[id] [post_id] [user_id (user who voted)] [value (1 or 0 or -1)]
1 1 1 1
2 1 2 -1
3 2 1 1
4 2 2 1
我正在尝试获取所有用户的列表以及他们所有的帖子sum(value)gathered 的总投票数,如下所示:
id: 1
name: Echolot
upvoteCount: 2
id: 2
name: AnotherUser
upvoteCount: 0
我已尝试使用以下查询,但没有成功,我得到了错误的值,而不是正确数量的结果:
SELECT joinedUsers.id, joinedPosts.postCount, joinedPostsUpvotes.upvoteCount
FROM users joinedUsers
inner join (
SELECT user_id, id, count(id) as postCount
FROM posts
GROUP BY user_id, id
) joinedPosts on joinedPosts.user_id = joinedUsers.id
inner join (
SELECT post_id, sum(value) as upvoteCount
FROM posts_upvotes
GROUP BY post_id
) joinedPostsUpvotes on joinedPostsUpvotes.post_id = joinedPosts.id
GROUP BY joinedUsers.id, joinedPosts.postCount, joinedPostsUpvotes.upvoteCount
提前感谢您提供任何提示或解决方案。
编辑:添加了测试数据和预期结果。
【问题讨论】:
-
显示测试数据和所需的输出。
-
@reds 感谢您的意见。我在我的问题中添加了一些数据和所需的输出。
-
所以你计算的是用户投的赞成票,而不是其他人在他的帖子上投的票?
-
@StefanoZanini 不,我想统计所有用户帖子的投票数。就像总分概览一样。
-
对不起,我误会了,你说的完全正确。一些答案应该会给你想要的输出