有一个用户表和一个user_follow表,它们描述哪个user.id
正在关注/关注。我想计算该用户正在关注和被关注的次数。
问题在于user_follow表没有foreign key
作为user_id,因此我无法通过公共字段将两个表enter image description here连接在一起。我尝试在LEFT OUTER JOIN
上使用user.id=user_follow.following_user_id and GROUP BY user.id
,但是它只计算关注的次数(跟随的时间与以下的完全相同,这是不正确的)。
答案 0 :(得分:0)
解决此问题的方法是在USER_FOLLOW上加入两次,一次用于“跟随”,一次用于“跟随”。
您尚未发布USER_FOLLOW的结构,因此这是一个猜测,您需要对其进行更正以适合您的架构。
select u.id, u.first_name, u.last_name
, count(f.following_user_id) as following_count
, count(fb.user_id) as followed_by_count
from user u
left_outer join user_follow f on where f.user_id = u.id
left_outer join user_follow fb on where fb.following_user_id = u.id
group by u.id, u.first_name, u.last_name