Я создаю приложение, в котором пользователи могут связываться друг с другом (что-то вроде друзей в любой социальной сети).
Я сохраняю эти соединения в таблице со следующей структурой:
id_user1 | id_user2 | is_accepted | is_blocked | created_at
Соединения между пользователями являются двунаправленными, поэтому при соединении двух пользователей в таблице остается только одна запись. Не имеет значения, находится ли user_id
в столбце id_user1
или id_user2
.
Теперь мне нужно написать sql-запрос, чтобы получить "друзей друзей" из определенного пользователя, который еще не является его другом. Также пользователь должен быть принят, а не заблокирован.
В резюме, вот шаги, которые мне нужно выполнить.
Найти все идентификаторы пользователей, связанные с пользователем, которого я хочу ( id_user1 = current_user
или id_user2 = current_user
и is_accepted
and ! Blocked
)
для каждого из возвращенных user_id -> получить всех связанных пользователей (игнорировать ассоциации с текущим пользователем) (убедитесь, что он принят
и ! заблокирован
).
Как я могу выполнить такой запрос?.
Спасибо за вашу помощь.