У меня есть 2 таблицы, а именно t_users и t_user_freinds . Схема довольно проста:
-------- --------
|t_users| | t_users_freinds|
-------- -----------------
| id | | id |
-------- ------------------
| name | |user_1 |
-------- ----------------
| user_2 |
----------------
Мой вопрос: как мне найти друзей друзей друзей (уровень глубины 3) для данного человека с id = 1?
Идентификатор просто число от 1 до x. Пользователь_1 - друг пользователя_2. Оба пользователя user_1 и user_2 существуют в таблице t_user.
Я новичок в SQL.
Спасибо.
ОБНОВЛЕНИЕ:
Я пробовал это
select t1.id, t1.name,
t2.user_2 as freinds, t3.user_2 as freinds_of_freinds
from t_user t1
inner join t_user_friend t2 on t2.user_1 = t1.id
inner join t_user_friend t3 on t2.user_1 = t2.user_2
WHERE t1.id = "1"
Но это не сработало и выдает нулевой результат (хотя ошибок нет.)
Для поиска только друзей пользователя:
select t1.id, t1.name,
t2.user_2 as friends
from t_user t1
inner join t_user_friend t2 on t2.user_1 = t1.id
WHERE t1.id = "1"
Это сработало, как ожидалось.
Поиск друзей из друзей из друзей
select t1.id, t1.name, t2.user_2 as freinds, t3.user_2 as freinds_of_freinds
from t_user t1
inner join t_user_friend t2 on t2.user_1 = t1.id
inner join t_user_friend t3 on t3.user_1 = t2.user_2
WHERE t1.id = "5"
Этот запрос SQL, похоже, работает, как ожидалось. Всем спасибо.