left join

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

  • left join

    Hallo,
    Ich habe folgendes Problem.
    Ich habe 3 tables mit folgender Struktur:
    Tabelle 1:
    id|name
    1|Wölflinge
    2|Jupfis
    3|pfadis
    4|rover

    Tabelle 2:
    id|tabelle1_id|tabelle3_id
    1 |1 |1
    2 |1 |2
    3 |2 |1
    4 |4 |1
    5 |2 |2

    Tabelle 3:
    id|beschreibung
    1|Sommerlager
    2|wochendfahrt

    Die Tabelle besagt also folgendes:
    Ins Sommerlager fahren Wölflinge Jupfis und rover
    Auf Wochendfahrt fahren Wölflinge Jupfis

    Nach einem Select möchte ich gerne die Tabelle so verbinden das folgendes rauskommt:
    |tabelle1.id|tabelle1.name|tabelle2.id|tabelle2.tabelle1_id|tabelle2.tabelle3_id

    Das macht mein join ja schon schön und gut. Leider ist es aber noch nicht alles was ich will:
    Ich möchte gerne zusätzlich, dass mir ALLE Einträge aus Tabelle1 aufgelistet werden und dennen dann die Eintrage aus Tabelle3 zugeordnet werden. Die Eintragäe aus Tabelle 1 die keine Zuordnung haben sollen aber auch angezeigt werden.
    Das heißt in meinem Beispiel, dass auch die Pfadis angezeigt werden sollen, obwohl denen nichts zugeordnet wurde.

    Meine Anweisung sieht folgendermaßen aus:
    SELECT DISTINCT tabelle1.id, tabelle1.name, tabelle2.tabelle1_id
    FROM `tabelle1`
    LEFT JOIN tabelle2 ON ( tabelle2.tabelle1_id = tabelle1.id )
    WHERE tabelle2.tabelle3_id = '37'

    Viele Grüße

    Tobias
    Zuletzt geändert von tsaenger; 19.10.2003, 12:03.

  • #2
    du musst dann schon alle drei tabellen aufnehmen

    Code:
    SELECT 
      t1.name, IF(ISNULL(t2.id),'nein', 'ja') fahren, t3.beschreibung
    FROM
      tabelle1 t1
      LEFT JOIN tabelle2 t2 
        ON t1.id=t2.tabelle1_id
          RIGHT JOIN tabelle3 t3 
            ON t3.id=t2.tabelle3_id
    ORDER BY
      t1.id
    (ungetestet)
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar

    Lädt...
    X