Join Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Join Problem

    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
    SQL Injection kitteh is...

  • #2
    Ja dann behebe doch einfach den gemeldeten Fehler ...

    Oder JOINe nicht doppelt, sondern benutze eine zweite ON-Bedingung.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Oder du arbeitest mit einem Alias
      Code:
      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
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Zitat von Seikilos Beitrag anzeigen

        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

        Kommentar

        Lädt...
        X