Jo: SQL: IF funktioniert nicht

Beitrag lesen

Hi!

Variante 1:

Die Abfrage bleibt wie sie jetzt ist, das IF() kann aber zugunsten des categoryname raus. Die abfragende Logik (die PHP-Funktion, die das SQL-Statement absendet und die Ergebnismenge entgegennimmt) stellt fest, wenn die Ergebnismenge leer ist (keine Kinder), soll sie die ID des Vorfahren zurückliefern. Die müsste sie eigentlich schon haben, denn zu genau diesem Vorfahren soll sie ja eigentlich die Kinder liefern.

Geringer Aufwand, kleine Änderung der Abfragelogik

Klingt ja als am sinnvollsten.
Nur heißt das - zwei Queries oder?

Ich schicke also den hier ab:

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

Und falls das Ergebnis leer ist, schicke ich diesen hinterher:

  
SELECT categoryid FROM board_category WHERE categoryname='Paul Watzlawick'

Oder verstehe ich das falsch?

Eine Stored Procedure ist noch aufwendiger, weil du vermutlich erst einmal die dazu notwendigen SQL-Anweisungen lernen musst. Zudem könnte sich ein Umstieg auf mysqli notwendig machen, wenn du bisher die mysql-Extension verwendet hast.

Richtig die müsste ich noch lernen. Ich nutze bereits MySQLi.
Was wäre denn performanter? Auf die Geschwindigkeit am Ende kommt es mir an. Was ich dafür lernen muss - sei mal dahergestellt.

Gruß, Jo