Community - Freundesliste

alex130

Erfahrenes Mitglied
Hallo,
ich mach grad ne kleine Community aber ich häng bei der Freundesliste und zwar wollte ich die Tabelle so machen:
Code:
friendships
- id
- userid 
-requesterid
-time
Ich denke das is das wichtigste, aber wenn ich nun eine Abfrage mache (where userid = $userid OR requesterid = $userid
Und ich brauch dann auch noch die Felder von der Tabelle profiles, wie mache ich das, dass der User sich selbst nicht auch als Freund sieht?
Danke
 
Moin.

Mhh, das klingt nach Grundlage. Ich trau' mich. ^^

SELECT f.*, p.* FROM friendships AS f LEFT JOIN profile AS p ON p.user_id = f.user_id WHERE f.user_id != $user_id AND f.requester_id = $user_id
 
Hallo,
danke für die rasche Antwort, doch die Abfrage stimmt auch nicht ganz, denn du fragst am Schluss folgendes ab:
Code:
f.requester_id = $user_id
Dann hätte ich alle Leute, denen ich eine Anfrage geschickt habe, allerdings sind meine Freunde ja auch die Leute, die mir eine Anfrage geschickt haben.
Womit ich wieder beim Problem wäre p.id = (entweder f.userid oder f.requesterid)...
Ich hoffe du verstehst, was ich meine.
Danke
 
Tricky. :) An Deiner Stelle hätte ich lieber zwei Datensätze pro Freundschaft in der Tabelle gepflegt, damit Abfragen schön einfach bleiben. Und wenn der User sich selbst als Freund sieht, gibt es ja anscheinend Einträge, wo user_id = requester_id ist? ... ich Versuche es trotzdem nochmal. Das müsste gehen:

SELECT f.*, p.*
FROM friendships AS f
INNER JOIN profile AS p ON p.user_id = f.user_id AND f.user_id != f.requester_id
WHERE (f.user_id = $user_id OR f.requester_id = $user_id)
 
Also du meinst, du würdest, bei der Anfrage den ersten Datensatz eintragen:
Code:
(userid, requesterid, accepted) VALUES (1, 2, 0)
Und sobald der User annimmt dann folgendes:
Code:
(userid, requesterid, accepted) VALUES (2, 1, 0)
Verstehe ich das richtig?
Natürlich wären die Abfragen dann leichter, aber is das denn wirklich gut, wenn ich eigentlich jeden Eintrag "doppelt" habe?
Danke

LG Alex
 
Zurück