Michael Schröpl: Wie mache ich diese Abfrage besser?

Beitrag lesen

Hi Andreas,

Es gibt doch bestimmt eine bessere Möglichkeit, dass man diese
komplizierte Verschachtelung nicht braucht, oder?

Letzten Endes mußt Du ein Programm (in PHP) schreiben, das ein Programm
(in SQL) schreibt (welches zwar nur eine einzige Zeile hat, welche es
aber "in sich hat"). lulu hat Dir den Ansatz dafür gezeigt.

Ich selbst mache das bei ganz ähnlichen Statements (einer Suchmaschine)
so, daß ich jede zusätzliche WHERE-Klausel von einer Funktion berechnen
lasse, welche ein Flag abfragt, welches die Information enthält, ob be-
reits mindestens eine WHERE-Klausel vorliegt, und für den Fall, daß sie
selbst eine erzeugt, dieses Flag selbst setzt. (Denn davon hängt bei mir
ab, ob die zusätzliche Klausel mit WHERE oder mit AND eingeleitet werden
muß.)
Eine Ebene höher konkateniere ich dann sämtliche Funktionsergebnisse.

Zwei Tips noch:

  • Sehr hilfreich für die Entwicklung Deines Programms ist ein globales
      Debug-Flag, welches die Ausgabe sämtlicher generierter SQL-Statements
      in das erzeugte Ausgabedokument hinein steuert (ggf. als HTML-Kommentare).
      Achtung: Vorher muß der HTTP-Header schon erzeugt sein ...
  • Nicht das Semikolon am Ende des SQL-Statements vergessen.

Denn an anderer Stelle sind das noch mehr Felder und das wird dann
sehr unübersichtlich.

Richtig - exponentiell viele Verzweigungen, um es deutlich zu formulieren.

Viele Grüße
      Michael