Alex: Unbekannte Spalte nach Umstellung auf MySQL 5

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

  1. 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
    
    1. 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