Ilja: Abfrage WHERE kollidiert mit GROUP

Beitrag lesen

moin,

SELECT n.name, COUNT( * ) -1 AS level

FROM nestedset AS n, nestedset AS p
WHERE n.lft
BETWEEN p.lft AND p.rgt
GROUP BY n.lft
ORDER BY n.lft
LIMIT 0 , 30

  
mal von dem problem abgesehen, hier noch ein paar hinweise von mir.  
  
- lass AS weg, es ist erstens nur optional und zweitens nicht alle DBMS unterstützen diese schreibeweise in dieser form bei den tabellen. zweitens bläst es den code meiner meinung nur auf. aber letzteres ist sicherlich auch geschmackssache.  
  
- benutze die explizite join schreibweise, auch bei einen selfjoin.  
  
- du grupppierst über die spalte n.lft, gibst aber in der ausgabe (projektion) die spalte n.name aus. dies ist ein bug von mysql, jedes andere dbms würde dir eine fehlermeldung ausgeben. und nein, es ist kein feature...  
  
Ilja