Jeśli twoja przyjaźń jest symetryczna, możesz przechowywać każdą parę w osobnym rekordzie:
friend1 friend2
A B
B A
A C
B D
C B
D B
i zapytaj o wszystkie B
znajomi tak:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
lub zapisz użytkownika z najmniejszym id
w pierwszym polu i to z największym id
w drugim:
friend1 friend2
A B
A C
B D
i zapytaj B
znajomi tak:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
Pierwsza opcja jest nieco bardziej wydajna w MySQL
, i jest to jedyna opcja, jeśli twoja przyjaźń nie jest symetryczna (jak na LiveJournal
)
Zobacz ten artykuł: