Meine MySQL-Tabellen Struktur ist wie folgt.SQL, um Freunde und Freunde von Freunden eines Benutzers zu erhalten
USER
int id
varchar username
FRIEND_LIST
int user_id
int friend_id
Für jeden Freund Beziehung einfügen I 2 Datensätze in FRIEND_LIST. Wenn Benutzer 1 ist der Freund von Benutzer 2 dann die nächsten Zeilen in FRIEND_LIST eingefügt werden
1,2
2,1
ich die Freunde und Freunde von Freunden von einem bestimmten Benutzer erhalten möchten.
Die Auswahl sollte die Spalten a, b, c zurückgeben.
1 2 two
1 3 three
2 1 one
2 3 three
2 4 four
2 5 five
3 1 one
3 5 five
3 6 six
3 7 seven
Kann ich diese Zeilen mit einer einzigen Abfrage erhalten:
a: user_id
b: friend_id
c: username (username of friend_id)
If 1 is friend of 2 and 3.
2 is friend of 3, 4 and 5
3 is friend of 5,6,7
die Abfrage dann 1en sollten Freunde und Freunde von Freunden zu erhalten zurückkehren
UPDATE ANTWORT: Ich habe die Antwort von DVK ein bisschen geändert und dies ist die Abfrage, die zurückgibt, was ich gesucht habe.
SELECT friends.user_id, friends.friend_id, username
FROM
FRIEND_LIST friends, USER
WHERE
CAT_USER.id = friends.friend_id
AND
friends.user_id = 1
UNION
SELECT
fof.user_id, fof.friend_id, username
FROM
FRIEND_LIST friends, FRIEND_LIST fof, USER
WHERE
USER.id = fof.friend_id
AND
friends.friend_id = fof.user_id
AND
friends.user_id = 1;
ich die erste Abfrage versucht, aber es sagt, dass User_id mehrdeutig ist – Enrique
ich den ersten verwenden werden Frage, die zweite gab mir falsche Ergebnisse. Vielen Dank! – Enrique