"ORDER by ID" sortiert net ganz so wie ichs will

asmodis!

Mitglied
Hallo leute,

folgendes Problem, wenn ich eine MySQL Schleife sortieren lassen will, kann ich doch des mit "order bei Spaltenname" machen.

Funktioniert auch, aber ich krieg dann folgendes Ergebnis:


1
10
11
12
13
14
15
16
17
18
19
2
20
21
......




statt wie ichs haben will:

1
2
3
4
5
6
7
8
9
10
11
12
........


is klar, ich könnts umgehen, indem ich statt "1" als id "01" eingeb....aber des Prob hab ich ja net nur mit Zahlen, sondern auch mit E-Mail Adressen,Namen usw... die listet mir die Schleife auch net so ganz Alphabetisch auf......



...Gibts da irgendnen Befehl für? Wäre nett wenn man mir des auf ne verständliche Art klar machen könnte...ich hab nämlich noch net viel Ahnung von MySQL/PHP .....

thx schon mal im Voraus
 
Also die frage nach dem Datentyp erübrigt sich bei dieser Ausgabe. Es ist denke ich mal ein String-Datentyp. (char, varchar, text, oder so) Bei Zahlen, die in irgendeiner Weise sortiert, berechnet oder sonstwas werden, nimm immer einen numerischen Datentyp. (int, decimal, oder so).
Um das problem mit Email-Adressen zu lösen, würde ich dir empfehlen, die Adressen mit der SQL-Funktion LOWER() in die Tabelle zu schreiben. Solltest du das nicht gemacht haben, kannst du das auch im Select verwenden:

Code:
SELECT * FROM tabelle ORDER BY LOWER(email)

Gruss Homer
 
@ at0m1c,

das stimmt so nicht ganz, den der Zusatz ASC(aufsteigend) oder DESC(absteigend) sagt dem ORDER BY nur, ob er aufwärts oder abwärts sortieren soll.
Außerdem kann mann sich ASC sparen, denn das ist bei ORDER BY blabla standartmäßig. Wenn man die Sortierung umdrehen will muß man "ORDER BY blabla DESC" schreiben.

Das würde in dem oben genanten Fall aber folgendes Ergebnis liefern:

...
21
20
2
19
18
17
16
15
14
13
12
11
10
1
...


Gruss Homer
 
naja, soweit war ich schon, mit ASC und DESC ...aber wie schon gesagt, des ändert nur die Reihenfolgen, aber die sortierung selbst bleibt immer noch so wie ich es net will......also, Vorschläge?
 
Meine Frage war auch als dezenter Hinweis darauf gedacht, dass das Feld eben den falschen Datentyp besitzt...

Mach aus dem Feld nachträglich int. Das sollte gehen, wenn wirklich nur Zahlen drinstehen. Dann sortiert er richtig.
Kennt mySQL cast(ID) as int? Dann könntest du das einfach in der Abfrage mit einbauen, und es ist dann int. Dann sortierts auch richtig...
 
naja, aber das is ja des Problem, die Bezeichnungen lauten ungefähr so:


WS P1
WS P2
WS P3
...
...
WS P12
WS P13
...
...
WS P2834798





....also kein integer.....und da beginnt dann des Problem....weil ichs z.B. für Artikelnummern brauch....
 
Tja in diesem Fall gibt es glaub ich nur die Möglichkeit führende Nullen in zufügen. z.B. so:

WS P0000001
WS P0000002
WS P0000003
...
...
WS P0000012
WS P0000013
...
...
WS P2834798

Was anderes fällt mir da nicht ein. Dürfte aber auch kein Streß sein, mit einem geeignetem Script oder so.
Sollte denoch jemand einen bessere Idee haben, lass ich mich gerne belehren *g*

Gruss Homer
 
du könntest auch ein anderes feld an die tabelle einfügen und das dann als primärschlüssel definieren. dann kannst du da ja werte einfügen, die eine deine reihenfolge so ordnen, wie du sie haben willst. das kann bei vielen datensätzen zwar etwas mehr arbeit werden, aber so würd ich das machen.
primärschlüssel sollte man meiner erfahrung nach eh immer als zahlenfeld festlegen, weil das nachher keine sortierungsprobleme gibt.
ob das allerdings besser ist, als die lösung von homer, weiss ich nicht.
 

Neue Beiträge

Zurück