Jens@frustriert: MySQL: Mehrfachjoin

Hallo zusammen!

Es geht um SQL-Basics, und ich finde keinen Weg, ein Ergebnis mit einem Join zu bekommen.

Gegeben sind drei Tabellen:

Inhalte wie folgt:

Im folgenden Join beschränke ich mich auf die Daten der Empfängeradresse:

SELECT BestellungID, AdresseID, Strasse, PLZ, Stadt, Land
FROM Bestellungen JOIN Adressen JOIN Laender
ON AdresseID = EmpfaengeradresseID
AND Laender.LandID = Adressen.LandID
AND BestellungID = 1001

Zur Bestellung 1002 würde ich aber gern Liefer- UND Empfängeradresse in einem Ergebnisdatensatz darstellen - wie stelle ich das an? Einmal muss ich AdresseID auf EmpfaengeradresseID beziehen und einmal auf LieferadresseID. Hab auch leider kein passendes Beispiel gefunden...
Danke vorab für Vorschläge!!

  1. Toll, Bilderlinks funktionieren ja super...

    Tabellen:
    http://img252.imagevenue.com/img.php?image=th_65794_Tabellen_122_540lo.jpg

    ...oder in Textform:

    Bestellungen:
    BestellungID
    LieferadresseID
    EmpfaengeradresseID

    Adressen:
    AdresseID
    Adresse
    Strasse
    PLZ
    Stadt
    LandID

    Laender:
    LandID
    Land

    und Inhalte:
    http://img107.imagevenue.com/img.php?image=65793_Inhalte_122_152lo.jpg

    1. ach ja - passend zu diesem Beispiel die Lösung für alle Interessierten:

      SELECT BestellungID, T1.AdresseID AS ID_Lieferadresse, T1.Strasse, T1.Stadt, L1.Land, T2.AdresseID AS ID_Empfaengeradresse, T2.Strasse, T2.Stadt, L2.Land
      FROM Bestellungen JOIN Adressen AS T1 JOIN Laender AS L1 JOIN Adressen AS T2 JOIN Laender AS L2
      ON T1.AdresseID = LieferadresseID
      AND T2.AdresseID = EmpfaengeradresseID
      AND L1.LandID = T1.LandID
      AND L2.LandID = T2.LandID
      AND BestellungID = 1002

  2. Hallo,

    Es geht um SQL-Basics, und ich finde keinen Weg, ein Ergebnis mit einem Join zu bekommen.

    Zur Bestellung 1002 würde ich aber gern Liefer- UND Empfängeradresse in einem Ergebnisdatensatz darstellen - wie stelle ich das an? Einmal muss ich AdresseID auf EmpfaengeradresseID beziehen und einmal auf LieferadresseID. Hab auch leider kein passendes Beispiel gefunden...

    das sollte kein Problem mehr sein, wenn Du meinen Artikel in SELFHTML aktuell

    Fortgeschrittene Jointechniken

    durchgelesen hast. Die Abschnitte Selfjoin und Mehrfachjoin, gleiche Joinspalte gehen auf ein analoges Beispiel ein.

    Freundliche Grüße

    Vinzenz

    1. perfekt, ich hätte genauer hinsehen sollen! Vielen Dank!!