Om din vänskapsrelation är symmetrisk kan du antingen lagra varje par i en separat post:
friend1 friend2
A B
B A
A C
B D
C B
D B
och fråga alla B
s vänner gillar det:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
eller lagra användaren med minsta id
i det första fältet och det med det största id
i den andra:
friend1 friend2
A B
A C
B D
och fråga B
s vänner gillar det:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
Det första alternativet är lite mer effektivt i MySQL
, och detta är det enda alternativet om din vänskapsrelation inte är symmetrisk (som på LiveJournal
)
Se den här artikeln: