Vinzenz Mai: Problem mit MySQL Left Join

Beitrag lesen

Hallo Leeloo5E,

SELECT pg.uid AS guid, pg.parent_id AS gparent_id, pg.sort_id, pg.creation_date, ne.uid, ne.parent_id, n.content AS name
FROM product_grp AS pg, product_grp_name AS pgn, name AS n
LEFT JOIN be_nav_element AS ne ON (ne.foreign_id = pg.uid AND ne.type_id = '5')
WHERE pgn.grp_id = pg.uid
AND n.uid = pgn.name_id
AND n.lang_id = '1'


>   
> Hm ... du sagst pg.uid AS guid und versuchst dann doch die Original-Bezeichnung mit ne.foreign\_id zu vergleichen. Letzteres kommt in deinem SELECT sonst überhaupt nicht vor. Merkwürdig.  
  
Nein, nicht merkwürdig - sondern richtig.  
Spaltenaliasnamen dürfen bei MySQL zwar in der WHERE-Klausel vorkommen,  
jedoch nicht in der JOIN-Klausel, wie ich [erst vor kurzem](https://forum.selfhtml.org/?t=152455&m=991602) anmerkte.  
  
Völlig überflüssig ist jedoch, dass Spalten, die in der Join-Klausel verwendet  
werden, auch in der Spaltenliste erscheinen müssen.  
  
Wie der King bereits zu Recht anmerkte, ist die Mischung zwischen expliziter  
und impliziter JOIN-Syntax schon recht merkwürdig.  
  
  
Freundliche Grüße  
  
Vinzenz