Hallo
Jetzt nach der Umstellung wird es einem aber um die Ohren gehauen. Da es in 4.0 möglich war und nun nicht, habe ich gehofft/hoffe ich, das es eine Einstellung gibt, die das auch unter 5.1 ermöglicht.
Soweit ich das überblicke, handelt es sich um eine inkompatible Änderung in MySQL 5.0.12, die ich explizit begrüße.
http://dev.mysql.com/doc/refman/5.0/en/news-5-0-12.html und das referenzierte Dokument http://dev.mysql.com/doc/refman/5.0/en/join.html.
Ich zitiere ein Beispiel, das genau Deinen Fall trifft:
<zitat>
Previously, the ON clause could refer to columns in tables named to its right. Now an ON clause can refer only to its operands.
Example:
CREATE TABLE t1 (i1 INT);
CREATE TABLE t2 (i2 INT);
CREATE TABLE t3 (i3 INT);
SELECT * FROM t1 JOIN t2 ON (i1 = i3) JOIN t3;
Previously, the SELECT statement was legal. Now the statement fails with an Unknown column 'i3' in 'on clause' error because i3 is a column in t3, which is not an operand of the ON clause. The statement should be rewritten as follows:
SELECT * FROM t1 JOIN t2 JOIN t3 ON (i1 = i3);
</zitat>
Ich finde diese Änderung extrem nützlich, weil MySQL ab 5.0.12 endlich vernünftige Ergebnisse bei Join-Operationen liefert. Sowas _nicht_ konfigurierbar zu halten, ist selbstverständlich eine gute Idee, weil es ansonsten unvorhersagbare Ergebnisse zu Folge hätte.
Ja, MySQL 5.0.x hat viele Anwendungen, die sich auf kaputtes Verhalten von
MySQL verlassen haben, auf den Boden der Tatsachen geholt:
Die Anwendungen waren anschließend kaputt.
Freundliche Grüße
Vinzenz