没有公用字段时,如何计算来自不同表的数字?

时间:2019-04-29 12:06:30

标签: mysql sql oracle

有一个用户表和一个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,但是它只计算关注的次数(跟随的时间与以下的完全相同,这是不正确的)。

1 个答案:

答案 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