Entschuldigung, dass der Titel nicht sehr klar ist. Dies ist eine Folgefrage zu meiner früheren Frage, bei der mir eines der Mitglieder mit einer Anfrage geholfen hat.
Ich habe folgende Freunde Tabelle
Freund
friend_id - Primärschlüssel
Benutzer_id
user_id_friend
Status
Wenn ich eine Freundschaftsanfrage an John sende, erscheint meine Benutzer-ID in user_id und Johns Benutzer-ID in user_id_friend.
Ein anderes Szenario ist, dass Mike mir eine Freundschaftsanfrage schickt - in diesem Fall wird Mikes UserID in user_id und meine UserID in user_id_friend erscheinen
Um also alle meine Freunde zu finden, muss ich eine Abfrage ausführen, um herauszufinden, wo meine UserID sowohl in der user_id-Spalte als auch in der user_id_friend-Spalte erscheint
Was ich jetzt versuche, ist - wenn ich nach einem Benutzer, sagen wir John, suche, möchte ich, dass alle Benutzer, die auf meiner Website aufgelistet sind, zusammen mit dem Status angezeigt werden, ob sie meine Freunde sind oder nicht, und wenn sie es nicht sind, dann eine Schaltfläche "Freund hinzufügen" anzeigen.
Basierend auf den vorherigen Beitrag - Ich habe diese Abfrage, die einen Teil der Arbeit tut - Mein Beispiel user_id ist 1:
SELECT u.user_id, f.status
FROM user u
LEFT OUTER JOIN friend f ON f.user_id = u.user_id and f.user_id_friend = 1
where u.name like '%'
Es werden also nur Benutzer angezeigt, mit denen ich befreundet bin und die mir eine Anfrage geschickt haben, d.h. meine UserID erscheint in user_id_friend.
Obwohl ich mit anderen befreundet bin (wobei meine UserID in der user_id-Spalte erscheint), gibt diese Abfrage null zurück
Um diese zu erhalten, brauche ich eine weitere Abfrage wie diese
SELECT u.user_id, f.status
FROM user u
LEFT OUTER JOIN friend f ON f.user_id_friend = u.user_id and f.user_id = 1
where u.name like '%'
Wie kombiniere ich also diese Abfragen, um einen Satz von Benutzern zurückzugeben und was mein Freundschaftsstatus mit ihnen ist. Ich hoffe, meine Frage ist klar
Gracias