Как посчитать число из другой таблицы, когда нет общего поля? - PullRequest
0 голосов
/ 29 апреля 2019

Есть пользовательская таблица и таблица user_follow, которая описывает, за чем user.id следует / следует. Я хотел бы подсчитать, что за этим пользователем следят и за ним следят.

Проблема в том, что таблица user_follow не имеет user_id как foreign key, поэтому я не могу присоединиться введите описание изображения здесь две таблицы в общем поле. Я пытался использовать LEFT OUTER JOIN на user.id=user_follow.following_user_id and GROUP BY user.id, но он учитывает только время следования (время следования точно такое же, как и следующее, что неправильно).

1 Ответ

0 голосов
/ 29 апреля 2019

Способ решить эту проблему - присоединиться к USER_FOLLOW дважды, один раз для Followed By и один раз для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...