Ако приятелските ви отношения са симетрични, можете да съхранявате всяка двойка в отделен запис:
friend1 friend2
A B
B A
A C
B D
C B
D B
и заявете всички B
приятелите на 's харесват това:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
или съхранявайте потребителя с най-малък id
в първото поле и това с най-голям id
във втория:
friend1 friend2
A B
A C
B D
и заявете B
приятелите на 's харесват това:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
Първата опция е малко по-ефективна в MySQL
, и това е единствената опция, ако приятелските ви отношения не са симетрични (като в LiveJournal
)
Вижте тази статия: