Моя структура таблиц MySQL выглядит следующим образом.
USER
int id
varchar username
FRIEND_LIST
int user_id
int friend_id
Для каждой дружеской связи я вставляю 2 записи в FRIEND_LIST.
Если пользователь 1 является другом пользователя 2, то следующие строки вставляются в FRIEND_LIST
1,2
2,1
Я хочу получить друзей и друзей друзей конкретного пользователя.
Выбор должен возвращать столбцы a, b, c.
a: user_id
b: friend_id
c: username (username of friend_id )
If 1 is friend of 2 and 3.
2 is friend of 3, 4 and 5
3 is friend of 5,6,7
Тогда запрос для получения 1 друзей и друзей друзей должен вернуться:
1 2 two
1 3 three
2 1 one
2 3 three
2 4 four
2 5 five
3 1 one
3 5 five
3 6 six
3 7 seven
Можно ли получить эти строки одним запросом?
ОБНОВЛЕНИЕ ОТВЕТА: Я немного изменил ответ DVK, и этот запрос возвращает то, что я искал.
SELECT friends.user_id, friends.friend_id, username
FROM
FRIEND_LIST friends, USER
WHERE
CAT_USER.id = friends.friend_id
AND
friends.user_id = 1
UNION
SELECT
fof.user_id, fof.friend_id, username
FROM
FRIEND_LIST friends, FRIEND_LIST fof, USER
WHERE
USER.id = fof.friend_id
AND
friends.friend_id = fof.user_id
AND
friends.user_id = 1;