Als je vriendschapsrelatie symmetrisch is, kun je elk paar in een apart record opslaan:
friend1 friend2
A B
B A
A C
B D
C B
D B
en doorzoek alle B
's vrienden vinden dat leuk:
SELECT friend2
FROM friends
WHERE friend1 = 'B'
of sla de gebruiker op met de minste id
in het eerste veld en dat met de grootste id
in de tweede:
friend1 friend2
A B
A C
B D
en vraag B
's vrienden vinden dat leuk:
SELECT friend1
FROM friends
WHERE friend2 = 'B'
UNION ALL
SELECT friend2
FROM friends
WHERE friend1 = 'B'
De eerste optie is iets efficiënter in MySQL
, en dit is de enige optie als je vriendschapsrelatie niet symmetrisch is (zoals op LiveJournal
)
Zie dit artikel: