Ma structure de tables MySQL est comme ça.SQL pour obtenir des amis ET amis d'amis d'un utilisateur
USER
int id
varchar username
FRIEND_LIST
int user_id
int friend_id
Pour chaque relation d'ami, j'insère 2 enregistrements dans FRIEND_LIST. Si l'utilisateur 1 est ami de l'utilisateur 2 alors les lignes suivantes sont insérées dans FRIEND_LIST
1,2
2,1
Je veux les amis et amis d'amis d'un utilisateur spécifique.
La sélection doit retourner les colonnes 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
Ensuite, la requête pour obtenir 1 amis et amis d'amis doivent retourner:
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
Puis-je obtenir cette lignes d'une seule requête?
MISE À JOUR RÉPONSE: J'ai modifié un peu la réponse de DVK et c'est la requête qui renvoie ce que je cherchais.
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;
J'ai essayé la première requête, mais il est dit que user_id est ambigu – Enrique
je vais utiliser la première requête, le second m'a donné des résultats erronés. Merci beaucoup! – Enrique