Mi estructura de tablas MySQL es así.SQL para obtener amigos Y amigos de amigos de un usuario
USER
int id
varchar username
FRIEND_LIST
int user_id
int friend_id
Para cada relación de amistad, inserto 2 registros en FRIEND_LIST. Si el usuario 1 es amigo del usuario 2 a continuación, las siguientes filas se insertan en FRIEND_LIST
1,2
2,1
quiero conseguir los amigos y amigos de amigos de un usuario específico.
La selección debe devolver las columnas 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
A continuación, la consulta de conseguir a amigos y amigos de amigos de 1 debería volver:
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
puedo conseguir este filas con una sola consulta?
ACTUALIZACIÓN RESPUESTA: Modifiqué la respuesta de DVK un poco y esta es la consulta que devuelve lo que estaba buscando.
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;
probé la primera consulta, pero se dice que user_id es ambigua – Enrique
Voy a usar la primera consulta, el segundo me dio resultados incorrectos. ¡Muchas gracias! – Enrique