jo: SQL: IF funktioniert nicht

Beitrag lesen

Hallo.

Folgende Situation:
Nested Set für Kategorien.
Es gibt folgende Einträge:

categoryid categoryname lft rgt level
  1 Oberkategorien 1 22 1
  2 Kommunikation 2 17 2
  3 Auto & Verkehr 18 21 2
  4 Beauty   22 23 2
  5 Ktheorien 3 12 3
  6 Kwissenschaften 13 14 3
  7 Paul Watzlawick 4 5 4
  8 Schulz von Thun 6 7 4
  9 Niklas Luhmann 8 9 4
  10 David Bohm 10 11 4
  11 Führerschein 19 20 3

Der folgende Query:

SELECT  
IF(node2.lft+1!=node2.rgt, node1.categoryname, node2.categoryid) AS res  
FROM board_category AS node1  
LEFT JOIN board_category AS node2 ON node2.categoryname='Ktheorien'  
WHERE  
node1.lft BETWEEN node2.lft AND node2.rgt  
AND node1.level = node2.level+1

soll folgendes tun:
Er soll mir alle Kinder von Ktheorien holen aber nicht die Kindes-Kinder.
Ergebnis sollte also sein: Paul Watzlawick, Schulz, von Thun, Niklas Luhmann und David Bohm.
Das klappt auch.
Nun - folgender Query ist genau wie der obrige nur mit "Paul Watzlawick" als Kategoriename:

SELECT  
IF(node2.lft+1!=node2.rgt, node1.categoryname, node2.categoryid) AS res  
FROM board_category AS node1  
LEFT JOIN board_category AS node2 ON node2.categoryname='Paul Watzlawick'  
WHERE  
node1.lft BETWEEN node2.lft AND node2.rgt  
AND node1.level = node2.level+1

Paul Watzlawick hat keine Kinder. Was soll er also tun? Stattdessen soll er mir doch wenigstens Paul Watzlawicks ID zurückgeben - damit ich im weiteren Programmfluss alternativ mit der Situation umgehen kann.
Das klappt leider nicht und ich weiß nicht warum.
Wenn Paul keine Kinder hat muss sein lft-Wert + 1 = sein rgt-Wert sein. Logisch.
Wenn also dieser Fall sein sollte und Paul keiner Kinder hat gibt IF-mir die KategorieID zurück - ich bin ja vorher genau an dem Punkt gejoint wo der Name "Paul Watzlawick" lautet.

Warum klappt das nicht? Ich bekomme ein leeres Array zurück.

Grüße,

Jo