Unbekannte Spalte nach Umstellung auf MySQL 5
Alex
- datenbank
0 Vinzenz Mai0 Alex
Guten Tag alle zusammen,
ich hab nach einer Umstellung von MySQL 4 auf Version 5.0 Probleme mit Queries wie der folgenden:
SELECT
child.nodeid, child.level, child.type,
IFNULL(cat.title, IFNULL(page.title, gal.title)) AS title
FROM
tbl_node AS node,
tbl_node AS child,
tbl_node AS current
LEFT JOIN
tbl_category AS cat ON cat.nodeid = child.nodeid
LEFT JOIN
tbl_gallery AS gal ON gal.nodeid = child.nodeid
LEFT JOIN
tbl_page AS page ON page.nodeid = child.nodeid
WHERE
(current.nodeid = '1')
AND (current.lft BETWEEN node.lft AND node.rgt)
AND (child.parentid = node.nodeid)
ORDER BY
child.lft
Als Fehlermeldung erhalte ich "#1054 - Unknown column 'child.nodeid' in 'on clause'". Kann ich in MySQL 5 nicht mehr mit einem Alias aus der FROM-Klausel im ON operieren? Das Feld tbl_node.nodeid existiert nämlich, und MySQL 4 hatte damit auch nie Probleme.
Grüße,
Alex
Hallo Alex,
ich hab nach einer Umstellung von MySQL 4 auf Version 5.0 Probleme mit Queries wie der folgenden:
SELECT
child.nodeid, child.level, child.type,
IFNULL(cat.title, IFNULL(page.title, gal.title)) AS title
FROM
tbl_node AS node,
tbl_node AS child,
tbl_node AS current
LEFT JOIN
tbl_category AS cat ON cat.nodeid = child.nodeid
LEFT JOIN
tbl_gallery AS gal ON gal.nodeid = child.nodeid
LEFT JOIN
tbl_page AS page ON page.nodeid = child.nodeid
WHERE
(current.nodeid = '1')
AND (current.lft BETWEEN node.lft AND node.rgt)
AND (child.parentid = node.nodeid)
ORDER BY
child.lft
> Als Fehlermeldung erhalte ich "#1054 - Unknown column 'child.nodeid' in 'on clause'". Kann ich in MySQL 5 nicht mehr mit einem Alias aus der FROM-Klausel im ON operieren? Das Feld tbl\_node.nodeid existiert nämlich, und MySQL 4 hatte damit auch nie Probleme.
das liegt an einer sehr begrüßenswerte Änderung seit MySQL 5.0.12, siehe </archiv/2007/11/t162133/#m1054848>
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
das liegt an einer sehr begrüßenswerte Änderung seit MySQL 5.0.12, siehe </archiv/2007/11/t162133/#m1054848>
danke für den Hinweis. Bedeutet das nun, daß ich z.B. mit einer Klammerung um die drei Argumente im FROM wieder das bekomme, was ich eigentlich habe wollte? Also So habe ich das zumindest verstanden.
...
FROM (
tbl_node AS node,
tbl_node AS child,
tbl_node AS current
)
LEFT JOIN
...
LEFT JOIN
...
Grüße,
Alex