basti_p: Select willkürlich sortiert

Hallo,

folgendes Problem: ich habe eine MySQL-Tabelle, u.a. gibt es eine Spalte "kategorie". In dieser stehen Werte wie "TOP", "Fortbildung", "Kultur" und andere.

Nun besteht der Wunsch, die Tabelle sortiert nach der Kategorie auszugeben - was ja kein Problem darstellt. Allerdings soll so sortiert werden, dass zuerst "TOP", dann "Fortbildung", dann "Kultur" und dann die anderen Kategorien kommen sollen.

Ist so etwas mit MySQL-Bordmitteln möglich (ohne mehrere Select-Statements zu verwenden, das wäre ja keine Kunst:-)

Vielen Dank und Grüße Basti

  1. Hi!

    Nun besteht der Wunsch, die Tabelle sortiert nach der Kategorie auszugeben - was ja kein Problem darstellt. Allerdings soll so sortiert werden, dass zuerst "TOP", dann "Fortbildung", dann "Kultur" und dann die anderen Kategorien kommen sollen.
    Ist so etwas mit MySQL-Bordmitteln möglich (ohne mehrere Select-Statements zu verwenden, das wäre ja keine Kunst:-)

    Jein. Füg eine Sortierspalte ein. Dann steckt die Sortierinformation in den Daten und kann durch dessen Pflege geändert werden.

    Oder erstell diese Sortierspalte nur in der Ergebnismenge, indem du mit CASE den drei Werten eine Reihenfolge (1,2,3) gibst und dem Rest die 4. Anschließend nach dieser Spalte und dem Kategorienamen sortieren lassen. Das hat den Nachteil, dass die Sortierinformation im Code steckt.

    Lo!

    1. Hallo dedlfix,

      Oder erstell diese Sortierspalte nur in der Ergebnismenge, indem du mit CASE den drei Werten eine Reihenfolge (1,2,3) gibst und dem Rest die 4. Anschließend nach dieser Spalte und dem Kategorienamen sortieren lassen. Das hat den Nachteil, dass die Sortierinformation im Code steckt.

      vielen Dank, das hat geklappt:

      SELECT news_date,
      CASE news_category
      WHEN 'TOP' THEN 1
      WHEN 'Fortbildung' THEN 2
      WHEN 'Kultur' THEN 3
      ELSE 4 END AS reihenfolge
      FROM _cms_modules_news_
      ORDER BY reihenfolge ASC, news_date DESC

      Grüße Basti

      1. SELECT news_date FROM _cms_modules_news_ ORDER BY FIELD(news_category, 'TOP', 'Fortbieldung', 'Kultur'), news_date DESC

        --
        for your security, this text has been encrypted by ROT13 twice.
        1. Wenn man Fortbildung richtig schreibt, funktioniert es noch besser... ^^

          --
          for your security, this text has been encrypted by ROT13 twice.
        2. Ich würde es eher anders herum angeben, da FIELD bei nicht gefunden 0 zurückgibt.

          ORDER BY FIELD(news_category, 'Kultur', 'Fortbildung', 'TOP') DESC, news_date DESC

          1. Ich würde es eher anders herum angeben, da FIELD bei nicht gefunden 0 zurückgibt.

            Wie man die Sortierung macht bleibt natürlich jedem selbst überlassen.

            --
            for your security, this text has been encrypted by ROT13 twice.