Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

configurando uma lista de amigos no mysql


Se o seu relacionamento de amizade for simétrico, você pode armazenar cada par em um registro separado:
friend1 friend2
A       B
B       A
A       C
B       D
C       B
D       B

e consulte todos os B amigos de assim:
SELECT  friend2
FROM    friends
WHERE   friend1 = 'B'

ou armazene o usuário com o menor id no primeiro campo e aquele com o maior id na segunda:
friend1  friend2
A        B
A        C
B        D

e consulte B amigos de assim:
SELECT  friend1
FROM    friends
WHERE   friend2 = 'B'
UNION ALL
SELECT  friend2
FROM    friends
WHERE   friend1 = 'B'

A primeira opção é um pouco mais eficiente em MySQL , e esta é a única opção se sua relação de amizade não for simétrica (como em LiveJournal )

Veja este artigo: