Suche Hilfe bei DB-Sortierung


Mike Rofon

Erfahrenes Mitglied
db-sortierung.jpg
Das ist die MySQL DB um die es geht, zumindest die relevanten Felder.
Ich komm nicht auf die richtige Idee, wie man die DB beim SELECT richtig sortiert, damit folgende Eigenschaften erfüllt sind:
- Sortierung nach der schnellsten Besttime, aber die leere Zeile steht UNTEN als letztes
- sind mehrere Zeilen leer, erfolgt deren Sortierung nach Car-Nr., die Sortierung der anderen Fahrer und deren Bestzeiten bleibt also erhalten.
Hinweis: Das ist eine Art Einzelzeitfahren, Startreihenfolge ist 4,3,2 und 1.
Es sollen immer alle 4 Fahrer angezeigt werden, u.a. deren Namen, die hier nur nicht zu sehen sind.

Gibt es vielleicht sogar eine MySQL-Klausel, die ebenso genial geeignet wie mir völlig unbekannt ist?
 

ComFreek

Mod | @comfreek
Moderator
Hast du schon das Internet befragt? :)

Folgende Suchterme ergeben sofort, was du möchtest: mysql order by multiple columns, mysql order by null last. Bei Letzterem ist ein bisschen das Problem, dass bei den meisten (wenn nicht allen) MySQL-Workarounds der Index nicht benutzt wird. Aber wenn du nur 4 Fahrer hast, ist das ja eh kein Problem. (Andererseits ist eine Tabelle mit nur 4 fixen Einträgen und das pro Rennen nicht unbedingt gutes Design - sofern ich das mit den mitgeteilten Informationen beurteilen kann.)
 

Mike Rofon

Erfahrenes Mitglied
Hast du schon das Internet befragt?
Da sind wir wieder bei den CHMs ;)ich habe aktuell eine MySQL-5.1-de.chm zur Hand, leider is die auf english und mit tausenderlei Querverweisen, iwi komm ich mit der nicht klar. Sonst wär mir schonmal eine brauchbare Syntax eingefallen. Und ORDER BY NULL LAST hab ich noch nie gesehen, aber das klingt spannend.
Das verfolg ich mal weitrer... Danke Dir...
 

Mike Rofon

Erfahrenes Mitglied
Folgende Suchterme ergeben sofort, was du möchtest: mysql order by multiple columns, mysql order by null last. Bei Letzterem ist ein bisschen das Problem, dass bei den meisten (wenn nicht allen) MySQL-Workarounds der Index nicht benutzt wird. Aber wenn du nur 4 Fahrer hast, ist das ja eh kein Problem. (Andererseits ist eine Tabelle mit nur 4 fixen Einträgen und das pro Rennen nicht unbedingt gutes Design - sofern ich das mit den mitgeteilten Informationen beurteilen kann.)
hmmm... so ganz funktionieren will das nicht.
Weder mit SELECT * FROM xy ORDER BY -besttime
noch mit ORDER BY -besttime DESC
noch mit ORDER BY besttime IS NULL, besttime ASC
noch mit ORDER BY besttime ASC, besttime IS NULL
noch mit ORDER BY ISNULL(besttime) , besttime ASC
und auch nicht mit ORDER BY COALESCE(besttime,'100000')
bekomme ich das gewollte Ergebnis.

UPDATE:
Der gefühlt 852. Versuch brachte es dann tatsächlich...
ORDER BY if(besttime = '' or besttime is null,1,0),besttime
Quelle:
https://stackoverflow.com/questions/5825804/mysql-order-by-field-placing-empty-cells-at-end
Das ist reines Copy/Paste. Was diese IF Funktion in einer SQL Anweisung genau macht... keine Ahnung
 
Zuletzt bearbeitet:

Neue Beiträge