Как создать sql для дружеских отношений (mysql)?

0

У меня есть таблица 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)
  • 2
    мне это кажется действительно неясным, в моей голове, я бы сделал таблицы следующим образом: users , user_friend_reqs , user_friends и присоединиться к ним, используя users . pk_id ?
  • 1
    Конечно, есть способ.
Показать ещё 2 комментария
Теги:

1 ответ

0
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 с самим собой гарантирует, что "дружба" будет "двунаправленной".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню