Hi!
Leider hab ichs mit der IF-Funktion schon versucht. Da bekomm ich genau so wie bei when, neben allen einträgen "blau" bis auf den mit der id die ich gesetzt hab, da steht dann gelb. Eigentlich sollte aber überall wo der Leaf Node die id 8 hat gelb stehen. Mein Code sieht jetzt so aus:
SELECT DISTINCT node.id, node.text, IF (node.lft BETWEEN parent.lft AND parent.rgt AND node.id = 8, "gelb", "blau") AS groesse
Nur bei dem einen Datensatz ist ja auch die node.id = 8. Ich denke, dan der Stelle brauchst du feste Werte für lft und rgt von Node 8. Mit User-Defined Variables sieht das wie folgt aus. Wenn du die Werte bereits in einer früheren Abfrage ermittelt hast, dann nimm diese.
SELECT @lft := lft, @rgt := rgt FROM node WHERE id = 8
SELECT ... IF(node.lft < @lft AND node.rgt > @rgt, "gelb", "blau") ...
Lo!