我有三个表,我试图计算每个用户在他/她的所有帖子上的点赞数。
用户表
id name
1 John
2 Joe
帖子表
id user_id post_title
1 1 Some Title
2 1 Another Title
3 2 Yeah Title
点赞表
id post_id
1 1
2 1
3 1
4 2
5 3
我的预期输出是
ID LIKES
1 4
2 1
我有点坚持下面的代码。我不知道如何添加和计算 likes 表。
SELECT *
FROM user
INNER JOIN posts
ON user.id = posts.user_id;
最佳答案
您需要将连接扩展到 LIKES 表,然后使用 GROUP BY
按用户 ID 和 COUNT()
该用户的所有记录进行分组。 ..
SELECT user.id, COUNT(likes.id)
FROM user
INNER JOIN posts ON user.id = posts.user_id
INNER JOIN likes ON posts.id = likes.post_id
GROUP BY user.id
如果你想列出没有帖子或喜欢的人,那么你应该使用外连接(因此将 INNER JOIN 更改为 LEFT JOIN)以便显示这些用户。
关于mysql - 如何计算基于 3 个表的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57743985/