dedlfix: SQL: IF funktioniert nicht

Beitrag lesen

Hi!

Kurzuzusammenfassung, ich komme nicht um eine Stored Produce oder um einen zweiten Query rum - sehe ich das richtig?

Oh doch, es kommt darauf an, für welchen der verschiedenen Lösungsansätze du dich entscheiden willst oder das bereits getan hast. Also nochmal.

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

Variante 2:

Das Statement wird um die Abfrage des Vorfahren erweitert. Für diesen gibt es per IF() die ID oder für die Kinder den categoryname. Im Kinderfall muss die Abfragelogik den Vorfahrdatensatz entfernen. Anderenfalls kommt nur der Vorfahrdatensatz (und darin die ID).

Ungefähr gleicher Aufwand wie bei Variante 1, aber etwas umständlicher und undurchsichtger.

Variante 3:

Die Kinderabfrage erfolgt wie bisher. Die Abfragelogik schickt jedoch eine Vorfahrabfrage hinterher, wenn es keine Kinder gibt.

Deutlich aufwendiger als V1 und V2, aber noch erträglich.

Variante 4:

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.

Lo!