2 votes

Comment obtenir une liste d'amis communs

Bonjour, je cherche à savoir comment obtenir des amis communs.

J'ai actuellement des problèmes pour y réfléchir.

J'ai une table appelée "users" et voici à quoi elle ressemble

id | name
-----------
1   Kenny
2   Jack
3   Jimmy
4   Chris
5   Meg
6   Jake
7   Micheal
8   Dude

J'ai une table appelée "amitié". et voici à quoi elle ressemble

user_a | user_b 
----------------
4         1        
7         5
8         1
2         4
2         1
5         2
1         6
1         7

L'utilisateur_a envoie à l'utilisateur_b une demande d'amitié et... BAM, il y a des amis. Maintenant, si je suis l'utilisateur 2, et je vais sur la liste d'amis de l'utilisateur 1, je veux voir quels amis nous avons en commun. Quel est le SQL correct pour faire cela ?

2voto

The Scrum Meister Points 17215

En supposant qu'il n'est pas possible pour l'utilisateur 1 d'être ami avec l'utilisateur 7 deux fois, (ce qui signifie qu'il ne peut y avoir une ligne avec user_a = 1, user_b=7 et une autre rangée user_a = 7, user_b = 1 ).

SELECT IF(user_a = 1 OR user_a = 2, user_b, user_a) friend
FROM friendship
WHERE (user_a = 1 OR user_a = 2) OR (user_b = 1 OR user_b = 2)
GROUP BY 1
HAVING COUNT(*) > 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X