У меня есть таблица mysql:
друзья (id, userid, friendid)
и пользователи таблицы (id, username) ex:
(1,'John'), (2, 'Jerry'), (3, 'Larry), (4, 'Marry')
Джон и Джерри - друзья, поэтому в друзьях у нас есть
(1,2)
(2,2)
и Ларри попросил Джона быть друзьями Джона, которые его не приняли
(3,1)
и Джон попросил Marry, которые не принимают его
(1,4)
Есть ли способ сделать SQL, чтобы получить что-то для друзей Джона:
(1, Jerry)
Во всей таблице мы имеем
(1,2)
(2,2)
(3,1)
(1,4)
select u.*
from friends f1
join friends f2 on f2.user_id = f1.friend_id
join users u on u.id = f1.friend_id
where f1.user_id = 1 -- John id
Соединение таблицы friends
с самим собой гарантирует, что "дружба" будет "двунаправленной".
users
,user_friend_reqs
,user_friends
и присоединиться к ним, используяusers
.pk_id
?