Home > PHP > MySQL: ORDER BY Fallunterscheidung mit CASE (WHEN THEN)

MySQL: ORDER BY Fallunterscheidung mit CASE (WHEN THEN)

Wenn man in PHP und MySQL arbeitet und ein Query ausführen möchte, mit dem man eine Fallunterscheidung machen und dabei je nach Verwendung nach einem bestimmten Feld sortieren will, kann man in der SQL-Sprache die CASE Anweisung nutzen. Wird die Bedinung in der WHEN Klausel erfüllt, so wird der angegebene Spaltenname zum Sortieren verwendet. Trifft die Bedingung nicht zu, so wird in der ELSE Klausel ein zweiter, alternativer Name einer Spalte angegeben. Die Struktur stellt im Grunde bedingte Anweisungen wie sie es mit IF / ELSE der Fall sind dar.

Hier ein Beispiel wie man bedingt nach mehreren Spalten sortieren kann:

Eine andere Möglichkeit ist es auch, einen neuen Alias im SELECT Block zu definieren. Im ORDER BY Block kann nur noch der Alias eingesetzt werden. Das Ergebnis und somit die Ausgabe bleibt die Selbe. Jeder kann also auswählen, was er für sich besser findet und einsetzen möchte. Ein Codebeispiel würde dann so aussehen:

Zuletzt sollte noch erwähnt werden, dass mehrere WHEN Klausel hintereinander folgen können. Dies würde in unserem Fall der bedingten Anweisung ELSEIF nahekommen. Für die Programlogik heißt es für uns: Es werden zuerst alle WHEN Bedingungen abgefragt. Trifft keine davon zu, dann wird in den ELSE Zweig gesprungen. Hier ein Codeschnipsel für viele WHEN Klausel hintereinander:

  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks