Schachteln INNER JOINs, mit UNION fordert in SQL - ziemlich verloren

Ich habe eine friends Tabelle: id, fid1, fid2 stellt eine Freundschaft zwischen zwei Nutzern (bidirektional).

und ein users Tabelle: fid,name

Ich würde gerne eine Funktion oder Abfrage, die

  1. Benutzer-id

und gibt

  1. die Liste der Freunde (Benutzer von.fid, der Benutzer.name) steht für all die Freunde, die Freunde mit original-Benutzer-id

Ich habe Probleme mit Verschachtelung-JOINs und UNIONs. Ich brauche die UNION, um sicherzustellen, dass ich alle Freundschaften (aber auch nicht bekommen, Duplikate). Dies ist, was ich habe, so weit:

SELECT fid1 as friends FROM friendships WHERE fid2 = 123456
INNER JOIN users
ON friendships.fid1 = users.fid

UNION ALL (

SELECT fid2 as friends FROM friendships WHERE fid1 = 123456
INNER JOIN users
ON friendships.fid2 = users.fid
)

ist ein Fehler:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN users ON friendships.fid1 = users.fid UNION ALL ( SELECT fid2' at line 2

in der Regel ich habe Probleme mit den Befehlen, weil ich nicht verstehen, wie SQL behandelt Ergebnisse - in normalen Programmiersprachen würde ich pass das Ergebnis der INNEREN Schließt sich an die Gewerkschaften und wenden Sie dann diese Funktion. Aber ich bin immer ein wenig verloren hier. Irgendwelche Gedanken?

Schreibe einen Kommentar