Mehrere Left Joins in mySQL
Frank S.
- datenbank
Hallo zusammen,
Ich kriegs in mySQL irgendwie nicht hin, mehrere Left Joins auch mehrere Fremdschlüssel auszuführen - bei einem Left Join funktioniert es, wenn ich aber so etwas hier versuche, kommt nur noch eine Meldung, dass S2 nicht gefunden wird.
SELECT S1.`name` AS `name_a1`, S1.`vorname` AS `vorname_a1`, L1.`flagge` AS `flagge_a1`,
L1.`kuerzel` AS `kuerzel_a1`, S2.`name` AS `name_b1`, S2.`vorname` AS `vorname_b1`,
L2.`flagge` AS `flagge_b1`, L2.`kuerzel` AS `kuerzel_b1`, V1.`kuerzel` AS `verband_a1`,
V2.`kuerzel` AS `verband_b1`
FROM `s_spielpaarung` P, `t_land` L1, `t_land` L2, `t_spieler` S2, `t_spieler` S1
LEFT JOIN `t_verband` V1 ON (S1.`t_verbandID` = V1.`t_verbandID`)
LEFT JOIN `t_verband` V2 ON (S2.`t_verbandID` = V2.`t_verbandID`)
WHERE P.`spieler_a1ID` = S1.`t_spielerID`
AND P.`spieler_b1ID` = S2.`t_spielerID`
AND S1.`t_landID` = L1.`t_landID`
AND S2.`t_landID` = L2.`t_landID`
AND P.`s_spielpaarungID`='$spielpaarung'
Ich hab mal versucht, die Reihenfolge der Tabellen im FROM Block zu ändern. Der Left Join funktioniert offenbar immer nur mit der letzten Tabelle, die aufgelistet ist und das Feld aus der anderen Tabelle wird nicht gefunden.
Als Fehlermeldung kommt dann etwas in der Art:
#1054 - Unknown column 'S2.t_verbandID' in 'on clause'
Kann mir da jemand helfen?
Hallo,
Warum verwendest Du die hübsche und übersichtliche explizite Join-Syntax nicht auch für Deine INNER JOINS?
Automatisch entfiele Dein Fehler, der die Operatorenpriorität nicht berücksichtigt.
Ich hab mal versucht, die Reihenfolge der Tabellen im FROM Block zu ändern. Der Left Join funktioniert offenbar immer nur mit der letzten Tabelle, die aufgelistet ist und das Feld aus der anderen Tabelle wird nicht gefunden.
Ja, das steht ganz genauso im Handbuch. Das ist zu erwarten und wurde hier schon mehrfach angesprochen, zum Beispiel:
</archiv/2009/4/t186018/#m1235144>
</2008/9/t177376/#m1168263>
Freundliche Grüße
Vinzenz