Vriendenlijst van gebruiker 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';
Gebruiker 123 is fan van deze gebruikers:
SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.friend_id = 123 AND status = 'waiting';
Vergeet niet een index toe te voegen aan de statuskolom.
Ik weet ook niet zeker of een tafel als deze hier ideaal voor is.
BEWERKEN:
Ik zou waarschijnlijk een schema als dit kiezen:
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)
Wanneer iemand een vriendschapsverzoek doet, voeg dan een nieuwe rij toe aan de tabel vriend_verzoek. Wanneer de ontvanger van het verzoek ervoor kiest om:
- om het verzoek te accepteren:voeg een nieuwe rij toe aan friend_xref en stel opgelost in op 1 in de friend_request-tabel
- om het verzoek te weigeren:voeg een nieuwe rij toe aan fan_xref en stel opgelost in op 1 in de friend_request-tabel
Maar het is beter om dit te vragen onder mysql, database-design of een vergelijkbare tag om de beste antwoorden te krijgen.