Zur Navigation

Sortierung

1 tobi

Hallo,

ich habe ein kleines Problemchen bei der Sortierung.
Ich habe in der Datenbank 3 sowie 4 stellige Zahlen.

Beim Aufzeigen de Inhalte soll absteigend sortiert weden. Vom Größten bis zum Kleinsten.

Leider kommt aktuell bspw. bei folgenden hinterlegten Zahlen: 895, 1351, 986, 1111, 1251

Dies heraus:
986
895
1351
1251
1111

Ich denke mir, er zieht die 3 stelligen vor weil deren erste Zahl höher ist wie die erste der 4 stelligen. Wie kann ich dies umgehen? Aktuell habe ich mir die Mühe gemacht, manuell in der Datenbank eine 0 davor zu setzen, sprich 0986. Dann klappts mit der Sortierung.

Mein Code zur Abfrage aktuell ist:
// Hole die 64 ältesten Datensätze der Klasse 3 ab und sortiere dann absteigend nach TTR (meiste zuerst)
$sql = "SELECT * FROM (
SELECT id, nachname, vorname, verein, ttr, timestamp FROM anmeldungen_2015_samstag WHERE gemeldeteKlasse = '3' ORDER BY timestamp ASC LIMIT 64
) as daten
ORDER BY TTR DESC";

29.06.2015 10:14

2 Jörg Kruse

Welcher Datentyp ist für `ttr` definiert?

Momentan werden die Zahlen als String sortiert. Wenn sie als Zahl sortiert werden sollen, muss `ttr` als INT oder als ein anderer Zahlen-Datentyp definiert werden.

29.06.2015 15:42 | geändert: 29.06.2015 15:42

3 tobi

In der Datenbank-Struktur:
Name: ttr
Type: text
Collation: latin1_german1_ci

Einfach nun von text auf INT in der Datenbank umstellen und gut ist?

30.06.2015 13:09 | geändert: 30.06.2015 13:10

4 Jörg Kruse

Wenn das Datenfeld nur Zahlen enthält, die als Zahlen sortiert werden sollen, ja. Vielleicht reicht auch MEDIUMINT oder SMALLINT. Eine Übersicht über die Wertebereiche der verschiedenen Integer-Typen findest du hier:

https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

Ein Gegenbeispiel wären übrigens Postleitzahlen - diese sollten als CHAR gespeichert werden, da andernfalls die führenden Nullen entfernt werden.

30.06.2015 16:49 | geändert: 30.06.2015 16:51

5 tobi

Ich habe nun INT genonmmen, gewünschter Effekt erreicht, danke ;)

06.07.2015 08:14

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]