(Join) zwei FK auf selben PK der Elterntbl

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • (Join) zwei FK auf selben PK der Elterntbl

    Hallo Leute,

    nach langer Zeit habe ich mal wieder ein Problem mit sql (mysql). Ich bekomme den Join einfach nicht hin.

    Folgender Fall:

    Ich habe zwei Tabellen:

    1. Tabelle Mpid
    Mpid_id | Mpid

    2. Tabelle Periodic_Jobs
    Periodic_Jobs_Id | Nächste_Ausführung | S_Mpid_Id | R_Mpid_Id

    Beispieldaten
    Mpid-Tabelle
    Mpid_id | Mpid
    1 | 123
    2 | 234
    3 | 345

    Periodic_Jobs-Tabelle
    Periodic_Jobs_id | Nächste_Ausführung | S_Mpid_id | R_Mpid_id |
    1 | 01.xx.xxxx | 1 | 3
    2 | 05.xx.xxxx | 1 | 2
    3 | 01.xx.xxxx | 2 | 3

    In der Tabelle "Periodic_Jobs" habe ich zwei FK-Constraints, die beide auf die selbe Tabelle "Mpid" referenzieren. S_... steht hierbei für "Sender" , R_... steht für "Empfänger". Ich speichere also die id der Mpid-Tabelle in zwei Feldern.

    Nun möchte ich einen Join schreiben, welcher mir aus der Tabelle Periodic_Jobs alle Jobs ausgibt, sowie deren Sender und Empfänger.
    Das Ergebnis soll also z.b so aussehen:
    1 | 01.xx.xxxx | 123 | 345 |
    2 | 05.xx.xxxx | 123 | 234 |
    3 | 05.xx.xxxx | 234 | 345 |

    Ich habe es mit
    SELECT Nächste_Ausführung, Mpid AS Sender, Mpid AS Empfänger
    FROM Periodic_Jobs INNER JOIN Mpid ON Periodic_Jobs.S_Mpid_id = Mpid.Mpid_id
    versucht.

    Soweit so gut. Wie bekomme ich aber die zweite (Empfänger) Spalte dazu? Mit einem UNION? Hab schon rumgespielt, scheint etwas zu tricky für mich ;) Oder ich steh auf dem Schlauch.

    Hoffe, ihr versteht was ich meine.

    Viele Grüße
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---
  • Dieses Forum hier ist magisch,

    keine Ahnung warum, aber immer wenn ich hier etwas Poste (kommt ja nicht os oft vor), eledigt es sich am Ende von selbst. Lol

    Also Zuerst habe ich folgende Abfrage versucht:
    Select Mpid AS Sender, Mpid AS Empfänger
    FROM Periodic_Jobs AS PJ
    INNER JOIN Mpid AS M ON Mpid_id = PJ.S_Mpid_id
    INNER JOIN Mpid AS M2 ON Mpid_id = PJ.R_Mpid_id

    Fehler: Column "Mpid" in field list ist ambiguous


    Also habe ich es mit Tabellenalias probiert:

    Select M1.Mpid AS Sender, M2.Mpid AS Empfänger
    FROM Periodic_Jobs AS PJ
    INNER JOIN Mpid AS M1 ON M1.Mpid_id = PJ.S_Mpid_id
    INNER JOIN Mpid AS M2 ON M2.Mpid_id = PJ.R_Mpid_id

    Und siehe da, es geht. Lol

    Ist vielleicht nicht die schönste Lösung, aber funzt. Danke ^^
    ----[Blockierte Grafik: http://www.smilie-harvester.de/smilies/Alltag/putzen.gif] Nein ich bin nicht die Signatur, ich Putz hier nur ---