Mysql 如何基于3个表进行SQL计数
我有三张表,我试图统计每个用户在他/她的所有帖子上喜欢的次数 用户表Mysql 如何基于3个表进行SQL计数,mysql,sql,Mysql,Sql,我有三张表,我试图统计每个用户在他/她的所有帖子上喜欢的次数 用户表 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
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 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 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
我被下面的代码卡住了。我不知道如何添加和计算表
SELECT *
FROM user
INNER JOIN posts
ON user.id = posts.user_id;
您需要将连接扩展到LIKES表,然后使用
groupby
按用户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
如果要列出没有帖子或喜欢的人,则应使用外部联接(因此将内部联接更改为左联接),以便显示这些用户。对于所需的结果,您不需要用户
表。您可以简单地执行以下操作:
SELECT p.user_id, COUNT(*)
FROM posts p JOIN
likes l
ON l.post_id = p.id
GROUP BY p.user_id;
您从用户处获取的唯一信息是id
,它已经在帖子中了。这假设posts
中的所有user\u id
值都是有效的,但这似乎是一个非常合理的假设