[SQL] Mehrere Joins derselben Tabelle

Dieses Thema im Forum "Webentwicklung" wurde erstellt von myth2806, 27. September 2009 .

Schlagworte:
  1. 27. September 2009
    Mehrere Joins derselben Tabelle

    Hi,

    folgende Situation: Eine Tabelle referenziert über Foreign Keys in zwei Spalten eine andere Tabelle. Nun will ich alle Informationen des referenzierenden UND alle Informationen BEIDER Datensätze aus der zweiten Tabelle auslesen.
    Mein Ansatz:
    Code:
    SELECT `t1`.*, `t2`.* FROM `t1`, `t2` WHERE `t1`.`id` = x AND (`t1`.`f1` = `t2`.`id` OR `t1`.`f2` = `t2`.`id`)
    
    funktioniert natürlich nicht weil ich dann die einen Daten von den anderen Daten der gleichen Tabelle wieder überschrieben werden.
    Gibt es da eine Möglichkeit?

    Grüße
     
  2. 27. September 2009
    AW: Mehrere Joins derselben Tabelle

    Renamen mit:

    SELECT t1.name as t1name

    dann kannst mit t1name drauf zugreifen
     
  3. 27. September 2009
    AW: Mehrere Joins derselben Tabelle

    Das funktioniert ja nicht, weil ich ja zwei Datensätze aus der gleichen Tabelle haben will.
    das wäre dann
    Code:
    SELECT t1.name as t1name, t1.name as t1name2....
    
     
  4. 27. September 2009
    AW: Mehrere Joins derselben Tabelle

    wenn du zwei datensätze haben willst, müsste es dann nicht
    SELECT `t1`.*, `t2`.* FROM `t1`, `t2` WHERE `t1`.`id` = x AND (`t1`.`f1` = `t2`.`id` OR `t1`.`f2` = `t2`.`id`)

    statt dem AND ein OR sein? (weiß grad nich was du mit deiner bedingung in der klammer bezweckst, aber falls Datensatz 1 t1.id = x ist und der zweite das in der klammer würd ich ein OR bevorzugen.)
     
  5. 28. September 2009
    AW: Mehrere Joins derselben Tabelle

    Versuchs einfach mal mit nem left outer join .

    select t1.*, t2.* from t1
    left outer join t2 on t2.id = t1.f1
    where t1.id = x

    Ich weiß es grad so nicht genau ausm kopf, ob man beim left outer join noch ein or einbinden kann....google einfach mal nach "sql join" dann schau dir die möglichkeiten mit "inner join und left outer join" etc. an
     
  6. 28. September 2009
    AW: Mehrere Joins derselben Tabelle

    probier mal das rename auf die tabelle:

    SELECT * FROM tabelle1 t1, tabelle2 t2, tabelle2 t3 WHERE ...

    dadurch kannst du 2 mal auf die tabelle zugreifen, evtl. hilft dieser ansatz.
    ich muss zugeben ich verstehe das problem noch nicht richtig. evtl hilft ein kleines beispiel mit beispiel datensätzen.

    gruß
     
  7. 30. September 2009
    AW: Mehrere Joins derselben Tabelle

    n benutzer kann 2 verschiedene autos fahren -> name, auto_id1, auto_id2
    in der tabelle auto gibt's fahrzeuge -> id, bezeichnung

    abfrage würde ich dann so machen:

    Code:
    select n.name, a1.bezeichnung as auto1_bezeichnung, a2.bezeichnung as auto2_bezeichnung from nutzer as n
    left join auto as a1 on n.auto_id1=a1.id
    left join auto as a2 on n.auto_id2=a2.id
    
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.