Donnerstag, 16. Oktober 2008, 18:17
Nur geduldete MySQL-Syntax
Ebenfalls bei den Vorbereitungen für MySQL 5 haben wir uns die SQL-Queries angeschaut, die ggf. problematisch werden könnten.
Wir haben die betroffenen (genau 2!) Kunden vor einigen Tagen angeschrieben und sie darauf hingewiesen. Es geht primär um SELECTs über mehrere Tabellen in Verbindung mit JOINs, die in einer speziellen Form von MySQL 5 nicht mehr geduldet werden, jedoch von Version 4.x.
Wir waren verwundert, dass es wirklich nur 2 Kunden waren, andererseits ist es auch von Vorteil
Wir haben die betroffenen (genau 2!) Kunden vor einigen Tagen angeschrieben und sie darauf hingewiesen. Es geht primär um SELECTs über mehrere Tabellen in Verbindung mit JOINs, die in einer speziellen Form von MySQL 5 nicht mehr geduldet werden, jedoch von Version 4.x.
Wir waren verwundert, dass es wirklich nur 2 Kunden waren, andererseits ist es auch von Vorteil
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Scriptblogger
Denis
(ich geh mal davon aus, dass Manuel keine SQLs von Kunden rausgeben darf, daher ein eigenes)
Situation:
- Ein Forum in der Beitragsansicht
- JOIN auf den Verfasser - der ist immer vorhanden
- LEFT JOIN auf den letzten "Bearbeiter" - muss nicht vorhanden bzw. zwingend identisch sein (Bsp: Moderator)
----
SELECT
p.posting_text,
u.id user_id,
u.username user_name,
e.id last_edit_id,
e.username last_edit_name
FROM
forum_postings p,
user u
LEFT JOIN
user e
ON
e.id = p.last_editor
WHERE
p.thread = 400
AND u.id = p.user
ORDER BY
p.id
----
Mit MySQL 4.1 - funktioniert absolut reibungslos und schön schnell.
Mit MySQL 5 dagegen folgender Fehler:
#1054 - Unknown column 'p.last_editor' in 'on clause'
zkoo
ich dachte im ernst, dein serienmailer sei einfach gut eingestellt und wollte schon fragen, welches programm du da nutzt
(nebenbei habe ich nicht den geringsten plan, was nun zu tun ist, aber ich schaue es mir noch an )
Scriptblogger
[...]
e.username last_edit_name
FROM
(forum_postings p,
user u)
LEFT JOIN
user e
[...]
Alternative: Da du beim Abfragen mehrer Tabellen einen "join" ausführst, könntest du das auch gleich im SQL-Statement deutlich machen:
[...]
e.username last_edit_name
FROM forum_postings p
JOIN user u ON (u.id = p.user)
LEFT JOIN
user e
[...]
tom
Der durchschnittliche MySQL-User weiss mit einem JOIN eh nix anzufangen.
Denis
Riieeeeeessen Dankeee!!! :-)
Da wär ich selbst wohl kaum drauf gekommen.
Norbert Tretkowski
http://dev.mysql.com/doc/refman/5.0/en/join.html