dedlfix: prüfung in MySQL statement mit nodes

Beitrag lesen

Hi!

case node.text when node.lft BETWEEN parent.lft AND parent.rgt AND node.id = 8 then "gelb" else "blau" end

Du solltest dich nochmal mit dem CASE-Operator beschäftigen und der Bedeutung der Parameter. Zuerst wird der WHEN-Ausdruck ausgerechnet Aufgrund deiner drei mit AND verknüpften Teilausdrücke ergibt sich dabei ein boolscher Wert. Das Ergebnis des WHEN-Ausdrucks wird mit dem CASE-Ausdruck verglichen. Du vergleichst also einen Text mit einem boolschen Wert.

Du könntest statt node.text TRUE oder FALSE einsetzen, damit boolean mit boolean verglichen wird. In deinem Fall halte ich jedoch die Verwendung der IF-Funktion für angebrachter und einfacher (in der Anwendung und in der Verständlichkeit des resultierenden Codes). CASE lohnt sich nur, wenn du mehrere WHEN-Ausdrücke gegen einen CASE-Asdruck vergleichen und unterschiedlich reagieren willst.

Control Flow Functions

Lo!