我有一个新问题,请帮忙
我有两张桌子:
users (id, username)
和
follows (follow, follower)
follow
是被关注的人,follower
- 关注follow
的人。 follow
和follower
都是来自users
表格的ID。
我需要查找被我跟踪的人的所有用户名,并且如果他们关注我,还要获取状态。反之亦然。
对我来说最大的问题是如果他们(我)跟着我回去怎么办。
我写的是:
select users.id, users.username, f.follow from users
left join follows f on f.follow = users.id where f.follower = 78;
它给了我所关注的所有用户但没有信息,如果他们跟着我回来......
====
更新
提供的查询FuzzyTree适合我。但实际上我有一个相关的问题。如果我想获得用户78的所有关注者,并为所有未跟随我的用户(用户71)提供关注按钮,该怎么办
答案 0 :(得分:2)
select users.id, users.username, f.follow,
CASE
WHEN EXISTS(SELECT 1 from follows f1 where f1.follow=78 and f1.follower=f.follow)
THEN 'Following ME' else 'Not' END as Folovingme
from users
left join follows f on f.follow = users.id
where f.follower = 78;
答案 1 :(得分:1)
select users.id, users.username, f2.follow also_follows_follower
from users
join follows f on f.follow = users.id
left join follows f2 on f2.follower = users.id and f2.follow = f.follower
where f.follower = 78;
如果他们不跟随关注者,also_follows_follower将为null
如果你想检查另一个用户,只需添加另一个左连接
select users.id, users.username,
f2.follow also_follows_follower, f3.follow also_follows_me
from users
join follows f on f.follow = users.id
left join follows f2 on f2.follower = users.id and f2.follow = f.follower
left join follows f3 on f3.follower = users.id and f3.follow = 71
where f.follower = 78;