Si su relación de amistad es simétrica, puede almacenar cada par en un registro separado:
friend1 friend2
A B
B A
A C
B D
C B
D B
y consulta todos los B
A los amigos les gusta eso:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
o almacenar el usuario con el menor id
en el primer campo y el de mayor id
en el segundo:
friend1 friend2
A B
A C
B D
y consulta B
A los amigos les gusta eso:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
La primera opción es un poco más eficiente en MySQL
, y esta es la única opción si su relación de amistad no es simétrica (como en LiveJournal
)
Ver este artículo: