Folgendes Schema:
Code:
friends:
id | user_id(FK) | friend_id(FK)
Und folgende Datensätze
Code:
1 | 100 | 101
2 | 100 | 102
3 | 103 | 100
Im Endeffekt ist eines Freundzuweisung. Ein Freund ist, wenn es einen Datensatz von User X gibt, wo user_id=X oder friend_id=X ist
Das funktioniert nun auch super, aber mein Problem ist, dass ich einen Join haben möchte um nicht die FKs sondern direkt die Wert zu haben:
Code:
id | user_id | friend_id | user.name | friend.name
---+---------+-----------+-----------+-------------
1 | 100 | 101 | user1 | user2
2 | 100 | 102 | user1 | user 3
3 | 103 | 100 | user4 | user1
Das Query geht natürlich nicht:
Code:
SELECT *
FROM `friend`
LEFT JOIN user ON (friend.USER_ID=user.ID)
LEFT JOIN user ON (friend.FRIEND_ID=user.ID)
WHERE (friend.USER_ID='100' OR friend.FRIEND_ID='100')
=> Script line: 1 Not unique table/alias: 'user'
Ist aber genau das, was ich suche. Ich kann eines der LEFT Joins auskommentieren und dann krieg ich entweder von user oder von friend den Join, aber das bringt mir nichts.
Ich will keine zwei Joins machen, weil ich weitere Logik-Operationen an die Applikation weitergeben will, was ich vermeiden möchte