Das Mischen von JOIN und Kommas in MySQL-Abfragen führt zu Fehlern
Problembeschreibung
Beim Ausführen der folgenden MySQL-Abfrage:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m, telephone as t INNER JOIN memeberFunctions as mf ON m.id = mf.memeber INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber WHERE mf.function = 32</code>
wird auf den folgenden Fehler stoßen:
<code>#1054 - Unknown column 'm.id' in 'on clause'</code>
Die Abfrage schlägt fehl, obwohl die Spalte vorhanden ist. Dieser Fehler tritt auf, wenn ANSI 1992 JOIN-Syntax und Kommas zusammen in einer Abfrage verwendet werden.
Lösung
Laut der MySQL-Dokumentation sollte das Mischen von JOINs und Kommas vermieden werden. Um dieses Problem zu beheben, ersetzen Sie das Komma durch den entsprechenden JOIN-Operator (CROSS, INNER, LEFT).
Die aktualisierte Abfrage mit INNER JOIN lautet wie folgt:
<code class="language-sql">SELECT m.*, t.* FROM memebers as m INNER JOIN telephone as t ON <join condition> INNER JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32 INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber</code>
Beachten Sie, dass die Verknüpfungsbedingung zwischen m
und t
angegeben werden sollte, um ein kartesisches Produkt zu vermeiden.
Zusätzliche Hinweise
Aus Gründen der Klarheit und Effizienz sollte der JOIN-Operator anstelle von Kommas verwendet werden. Das Komma weist auf einen CROSS JOIN hin, der zu unerwartetem Verhalten führen kann, insbesondere beim Kombinieren mehrerer Tabellen. Durch die Verwendung expliziter JOIN-Operatoren können Sie spezifische Beziehungen zwischen Tabellen definieren, um sicherzustellen, dass Sie die gewünschten Ergebnisse erhalten.
Das obige ist der detaillierte Inhalt vonWarum führt das Mischen von JOINs und Kommas in MySQL-Abfragen zu „Unbekannte Spalte'-Fehlern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!