Вот две таблицы:
1.user
user_id | full_name | username
1 A A_1
2 B B_2
3 C C_3
4 D D_4
5 E E_5
2.user_follower
user_id | follower_id | follow_dtm
2 4 2018-10-09 10:10:10
2 3 2018-01-09 11:10:10
1 5 2018-11-09 07:10:10
4 2 2018-10-09 06:10:10
4 5 2018-10-09 00:10:10
Найти последователя пользователя: 2 Вывод должен быть:
user_id: 4 fullname: D username: D_4 f_total_flwr: 2 (num of flwr of id-4) following: yes
user_id: 3 fullname: C username: C_3 f_total_flwr: 0 (num of flwr of id-3) following: no
Мне нужен запрос mysql, чтобы найти всех последователей определенногопользователь с подробной информацией о фолловерах из таблицы user
и должен знать количество фолловеров у каждого фолловера, и мне также нужно, чтобы этот фолловер следовал за фолловером.Вот что я попробовал:
SELECT u.user_id
, u.full_name
, u.username
, COUNT(DISTINCT uf.follower_id) f_total_flwr
, case when b.user_id is null then 'no' else 'yes' end following
FROM user_follower
JOIN user u
ON user_follower.follower_id = u.user_id
LEFT
JOIN user_follower uf
ON u.user_id = uf.user_id
LEFT
JOIN user_follower b
ON b.user_id = user_follower.follower_id
and b.user_id = u.user_id
WHERE user_follower.user_id=2
GROUP
BY u.user_id
ORDER
BY uf.follow_dtm DESC
LIMIT 30
Я знаю, что приближаюсь;).Проблема в том, что я получаю following
со значением yes
, даже если пользователь не следует назад. Вот еще одна странная вещь - not all
, но some of them
показывает yes
, который должен быть no
.Спасибо!