Moritz M.: Frage zu Query

Hallo zusammen,
ich habe zwei folgende MySQL-Tabellen:

Tabelle 1: Laender
Spalten: ID und Name
In dieser Tabelle stehen einfach Namen von verschiedenen Länder drin. Über die Spalte ID lässt sich ein Land eindeutig identifizieren.
1 Deutschland
2 Niederlande
3 Frankreich
usw...

Tabelle 2: Reisen
Spalten: ID, VonLand, NachLand (+ weitere, aber hier unwichtig)
In dieser Tabelle werden Reisen gespeichert. Diese Tabelle ist per Fremdschlüssel mit der Tabelle Laender verknüpft, in den Spalten VonLand und NachLand stehen daher die IDs der jeweiligen Länder.

Nun möchte ich eine Übersicht über die Reisen ausgeben lassen. Dabei sollen bei VonLand und NachLand aber nicht einfach die IDs der Länder stehen, sondern direkt die Namen ausgegeben werden.

Das habe ich bis jetzt:
SELECT r.ID, laender.Name
FROM reisen as r
LEFT JOIN laender
ON r.VonLand = laender.ID

Damit kriege ich problemlos den Namen des Start-Landes ausgegeben, wie aber bekomme ich nun auch noch den Namen des Ziel-Landes?

  1. Hallo Moritz,

    Nun möchte ich eine Übersicht über die Reisen ausgeben lassen. Dabei sollen bei VonLand und NachLand aber nicht einfach die IDs der Länder stehen, sondern direkt die Namen ausgegeben werden.

    Das habe ich bis jetzt:
    SELECT r.ID, laender.Name
    FROM reisen as r
    LEFT JOIN laender
    ON r.VonLand = laender.ID

    Damit kriege ich problemlos den Namen des Start-Landes ausgegeben, wie aber bekomme ich nun auch noch den Namen des Ziel-Landes?

    mit einem zweiten Join auf die Tabelle laender, die Du dann mit Aliasnamen ansprechen musst, so wie ich das beim Selfjoin beschrieben habe:

      
    SELECT                  -- Gib mir  
        r.ID,               -- die ID der Reise  
        sl.Name Startland,  -- das Startland und  
        zl.Name Zielland    -- das Zielland  
    FROM                    -- aus der Tabelle  
        reisen r            -- Reisen, die als r angesprochen wird  
    INNER JOIN              -- und mit der Tabelle  
        laender sl          -- laender (_s_tart_l_and), angesprochen als sl  
    ON                      -- über die Spalten  
        r.VonLand = sl.ID   -- VonLand in der Tabelle r und ID in der Tabelle sl  
    INNER JOIN              -- und erneut mit der Tabelle  
        laender zl          -- laender (_z_iel_l_and), angesprochen als zl  
    ON                      -- über die Spalten  
        r.NachLand = zl.ID  -- NachLand in der Tabelle r und ID in der Tabelle zl  
                            -- verknüpft ist.  
    
    

    Auf AS verzichte ich lieber.

    Freundliche Grüße

    Vinzenz

    1. Super, danke für den Link und deine Hilfe Vinzenz!