Mark: mysql -> order

Guten Morgen,

kann man in der mysql-Anweisung* auch eine eigene Reihenfolge  festlegen, oder kann man dort nur ASC und DESC anwenden?

Also nicht 1,2,3,4,5 | 5,4,3,2,1 sondern z.B. 2,4,5,3,1

Ich konnte/könnte das zwar via PHP im Nachhinein noch passend machen, aber je kürzer desto besser.

Gruß, Mark

*=Sorry wenn ich mich mit der "Begrifflichkeit" vergriffen hab, hoffe dennoch dass meine Frage richtig verstanden wird.

  1. Guten Morgen,

    kann man in der mysql-Anweisung* auch eine eigene Reihenfolge  festlegen, oder kann man dort nur ASC und DESC anwenden?

    Also nicht 1,2,3,4,5 | 5,4,3,2,1 sondern z.B. 2,4,5,3,1

    Wahrscheindlich geht sowas wie:
    SELECT *, IF(id = 1,'0',(IF(id=3,'1',(IF(id=5,'2',(IF(id=4,'3',(IF(id=2,'5',0)))))),))) AS order_attri
    From table
    ORDER BY order_attri DESC/ASC

    Ist aber einfacher du machst es mit PHP

    mfg Tobias

    1. O.K. dann nicht :)

      Beispiel:

      Ich habe zwei Tabellen

      Artikel
      ------------------
      id : hst_id : artikel_name

      Hersteller
      ------------------
      hst_id : hesteller_name

      bei beiden tabellen können nachträglich Datensätze eingefügt werden, heisst aber auch z.B., dass Hersteller mit Anfangsbuchstaben A eine höhere ID(Autoindex) zugeordnet bekommen können.

      Meine Artikel-Ausgabe soll aber aufsteigend ausgegeben werden und zwar zuerst hersteller_name, dann artikel_name...die Namen liegen aber in zwei unterschiedlichen Tabellen.
      Bleibt mir da keine andere Möglichkeit als die Tabelle Artikel in einem Array zu speichern und hinterher dieses mit dem Hersteller auszugeben? Wenn ja hab ich das nächste Problem -> Meine Blätterfunktion ist für die Katz (LIMIT in Tabelle Artikel):(

      Gruß und Danke

      Mark

      1. Du kannst in der Abfrage die beiden Tabellen Verknüpfen:

        SELECT
          Artikel.*, Hersteller.*
        FROM
          Artikel LEFT JOIN Hersteller
        ON
          Artikel.hst_id = Hersteller.id
        ORDER BY
          hersteller_name, artikel_name

        1. Ein ganz großes Dankeschön tobias!

          Gruß, Mark

  2. yo,

    kann man in der mysql-Anweisung* auch eine eigene Reihenfolge  festlegen, oder kann man dort nur ASC und DESC anwenden?

    das geht meiner meinung nach auf zwei wegen. zum einen könntest du zusätzlich eine weitere spalte einfügen, nach der in der query sortiert wird und in abhähgigkeit zu den werten der betroffenen spalte steht. also sagen wir mal du hast die zahlen  1 bis 5 und die 4 soll zuerst kommen, dann hat der datensatz in der einen spalten den wert 4 und in der "künstlichen" sortierungspalte eben den wert 1, usw.

    der andere weg würde über den datentyp enum gehen. wie der genau definiert ist, kannst du dir in der mysql dokumentation anschauen.

    Ilja