Sortere på udtræt fra MySQL

Tags:    mysql php

Hej Alle.

Jeg har en række brugere i en database, som bliver udskrevet i en tabel.
Jeg vil gerne sortere på dem.

Det er for en boligforening, og alle brugernavnene er bolig nummeret. Dvs, for mit vedkommende er mit brugernavn 40 - fordi jeg bor i nr 40.

Jeg vil gerne sortere dem på brugernavnet, og det er egentlig heller ikke noget problem, problemet er måden der bliver sorteret på.

For hvis jeg fortæller den i PHP koden, at den skal sortere på brugernavn cellen, så sortere den således, at nr 58, kommer før nr 8, fordi den ikke ser hele tallet, men kun det første.

hvordan man kan løse denne udfordring ? :)



5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 18 karma
Sorter efter stemmer Sorter efter dato
Hvis du vil sortere Husnummer som et tal, så skal felttypen også være et tal.

To hurtige 'hacks':

Order by ABS(brugernavn)
Order by brugernavn + 0

I begge tilfælde bliver typen castet til int.



Smæk ORDER BY brugernavn på dit SELECT statement. Det er en database opgave at sortere dit output.

Hvis du insisterer på at sortere dem i din app, så skal du ha leading-zeros på dine brugernavne. 01, 02,... 08 osv



Hej Gustav.

Der er du igen :-) Tak for hjælpen!

Jeg er med på ORDER BY, og det i sig selv virker også ganske fint, bortset fra at den ikke sortere på hele tallet.

Okay, jeg prøver at sætte et 0 foran, det er trods alt kun 4 brugere der bliver påvirket af dette :) 2,4,6 og 8



ORDER BY burde ikke lave ballade med den slags... Hvilken type har din husnummer række i tabellen?



Tak for svar stefan, jeg vidste ikke at man bare kunne lave en + 0

brugernavn har "varchar" i tabellen.. det er nok problemet :)

-- UPDATE

Når jeg vil opdatere fra varchar til int skriver den :

SQL-forespørgsel:

ALTER TABLE `brugere` CHANGE `brugernavn` `brugernavn` INT NOT NULL

MySQL returnerede:

#1062 - Duplicate entry '0' for key 2

hvad skal jeg gøre her ?



Indlæg senest redigeret d. 22.04.2012 19:10 af Bruger #14791
t