ORDER by

  • Guten Morgen,


    hab eine kleine Frage zu ORDER BY. Mein Code sieht so aus


    PHP
    $stmt = $mysqli->prepare("SELECT l_id, l_titel, l_titel_url, l_sort, l_status FROM web_leistungen WHERE l_status=? ORDER by l_sort DESC");


    damit möchte ich die Ausgabe von groß nach klein sortieren und zwar was im Feld l_status steht. Soweit so gut. Wenn ich nun Zahlen zwischen 1 - 99 vergebe klappt alles richtig. Sobald aber die 100 mit ins Spiel kommt, sortiert er komplett falsch. Warum?

  • Verwirrend beschrieben, vorallem da Du sagst

    Zitat

    sortieren und zwar was im Feld l_status steht


    aber dann

    SQL
    ORDER by l_sort


    in der Query steht.


    Dein Problem ist sicherlich, dass das Feld als VARCHAR / CHAR definiert ist.
    Der Sql Server sortiert dann
    1
    90
    99
    -> das erste Zeichen zählt hier.
    demnach
    1
    100
    99
    oder auch
    234235
    312
    333
    5345
    unsw.


    Wenn Du das Feld nicht auf INT umstellen kannst, dann gibt es die Möglichkeit:

    SQL
    ORDER BY CAST(`l_status` AS SIGNED) DESC -- SIGNED ^= vorzeichen, also zb -1000 und +1000 möglich
    -- UNSIGNED wenn du nur positive werte erwartest


    CAST siehe: http://dev.mysql.com/doc/refma…ctions.html#function_cast

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!