Venneliste over bruger 123:
SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.user_id = 123 AND status = 'accepted';
Bruger 123 er fan af disse brugere:
SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.friend_id = 123 AND status = 'waiting';
Glem ikke at tilføje indeks i statuskolonnen.
Jeg er heller ikke sikker på, at et bord som dette er ideelt til dette.
EDIT:
Jeg ville nok vælge et skema som dette:
friend_request
request_from (foreign key to users.user_id)
request_to (foreign key to users.user_id)
resolved (boolean 1 or 0, default is 0)
friend_xref
friend (foreign key to users.user_id)
is_friend_with (foreign key to users_user_id)
fan_xref
user (foreign key to users.user_id)
is_fan_of (foreign key to users.user_id)
Når nogen laver en venneanmodning, skal du tilføje en ny række til tabellen friend_request. Når anmodningsmodtageren vælger at:
- for at acceptere anmodningen:tilføj ny række til friend_xref og sæt løst til 1 i friend_request-tabellen
- for at afvise anmodningen:tilføj ny række til fan_xref og sæt løst til 1 i friend_request-tabellen
Men det ville være bedre at spørge om dette under mysql, database-design eller et lignende tag for at få de bedste svar.