Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Join Problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Join Problem


 
Seikilos
09-02-2010, 21:46 
 
Folgendes Schema:

friends:
id | user_id(FK) | friend_id(FK)


Und folgende Datensätze

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:


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:

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

 
wahsaga
09-02-2010, 21:47 
 
Ja dann behebe doch einfach den gemeldeten Fehler ...

Oder JOINe nicht doppelt, sondern benutze eine zweite ON-Bedingung.

 
Kropff
09-02-2010, 22:23 
 
Oder du arbeitest mit einem Alias
SELECT
*
FROM
`friend` f
LEFT JOIN user u1
ON (f.USER_ID = u1.ID)
LEFT JOIN user u2
ON (f.FRIEND_ID = u2.ID)
WHERE f.USER_ID = '100'
OR f.FRIEND_ID = '100'
Ungetestet und nicht sehr schön.

Peter

 
EVAMasters
10-02-2010, 00:16 
 
Im Endeffekt ist eines Freundzuweisung.

... dass ich einen Join haben möchte um nicht die FKs sondern direkt die Wert zu haben:

Ist aber genau das, was ich suche ... weil ich weitere Logik-Operationen an die Applikation weitergeben will, was ich vermeiden möchte


watt is


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:23 Uhr.