/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Sortering i MySQL og PHP
Fra : Ukendt


Dato : 03-01-04 17:42

Hejsa.

Jeg har en hjemmeside som jeg vil lave et nyt design på.

Når man får en liste består den af følgende i dag.

ft-10
ft-100
ft-47
ft-470

osv osv..

Disse værdier står i et felt der hedder "model"

Jeg vil gerne have at den lister dem ud som,

ft-10
ft-47
ft-100
ft-470

Kan man det med MySQL.?


--
....::Hilsen Erik


 
 
Kim Schulz (03-01-2004)
Kommentar
Fra : Kim Schulz


Dato : 03-01-04 17:40

On Sat, 03 Jan 2004 17:41:31 +0100
Erik Hansen <mail.invalid> wrote:
> Hejsa.
>
> Jeg har en hjemmeside som jeg vil lave et nyt design på.
>
> Når man får en liste består den af følgende i dag.
>
> ft-10
> ft-100
> ft-47
> ft-470
>
> osv osv..
>
> Disse værdier står i et felt der hedder "model"
>
> Jeg vil gerne have at den lister dem ud som,
>
> ft-10
> ft-47
> ft-100
> ft-470
>
> Kan man det med MySQL.?


SELECT bla, bla bla FROM dintabel ORDER BY model ASC


Leonard (03-01-2004)
Kommentar
Fra : Leonard


Dato : 03-01-04 17:55

Kim Schulz <kim@schulz.dk> wrote:

>SELECT bla, bla bla FROM dintabel ORDER BY model ASC

Men det vil ikke virke, da ft-100 kommer før ft-47 i en almindelig
sortering.
En løsning kan være at dele udtrækket i intervaller, så du først tager
dem under 100, men om du kan det direkte når der er ft- foran ved jeg
ikke:

SELECT bla, bla bla FROM dintabel WHERE model<'ft-100' ORDER BY model
ASC

og

SELECT bla, bla bla FROM dintabel WHERE model=>'ft-100' AND model
<'ft-1000' ORDER BY model ASC

men det kræver at du ikke har modeller der hedder andet end ft-xxx ...
--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

Jimmy (03-01-2004)
Kommentar
Fra : Jimmy


Dato : 03-01-04 18:10


"Erik Hansen" <mail.invalid> wrote in message
news:inrdvv0tdldscp8j7a1193f0rtifc12rfl@4ax.com...
> Hejsa.
>
> Jeg har en hjemmeside som jeg vil lave et nyt design på.
>
> Når man får en liste består den af følgende i dag.
>
> ft-10
> ft-100
> ft-47
> ft-470
>
> osv osv..
>
> Disse værdier står i et felt der hedder "model"
>
> Jeg vil gerne have at den lister dem ud som,
>
> ft-10
> ft-47
> ft-100
> ft-470
>
> Kan man det med MySQL.?

Man kan næsten alt i MySQL

Her kommer der en løsning - ikke pæn og jeg er sikker på man kan løse dit
problem på en anden måde:

SELECT
CAST(REPLACE (Model, 'ft-', '') AS UNSIGNED) AS Temp_Model,
Model

FROM
test

ORDER BY
Temp_Model ASC

Mvh
Jimmy



Peter Brodersen (03-01-2004)
Kommentar
Fra : Peter Brodersen


Dato : 03-01-04 18:18

On Sat, 03 Jan 2004 17:41:31 +0100, Erik Hansen <mail.invalid> wrote:

>Kan man det med MySQL.?

Hvis du kan forudsætte, at første del altid vil være den samme
("ft-"), så kan du fx bruge:

ORDER BY SUBSTRING(model,4)+0
eller
ORDER BY SUBSTRING_INDEX(model,'-',-1)+0

SUBSTRING(model,4) vil give "10", "100", "47" og "470" som output. Ved
at lægge 0 til, laver vi værdierne om til tal, vi kan sortere efter.


Hvis første halvdel også kan ændre sig, men de to led altid er delt af
bindestreg, kan det løses ved først at sortere hvert led for sig, fx:

ORDER BY
SUBSTRING_INDEX(model,'-',1),
SUBSTRING_INDEX(model,'-',-1)+0

På længere sigt kan det nok anbefales at dele feltet op. Med
ovenstående vil du heller ikke ku' få udnyttelse af et evt index,
hvilket selvfølgelig kun er relevant, hvis din tabel er af en vis
størrelse.

--
- Peter Brodersen

Ugens sprogtip: ikke (og ikke ik)

Ukendt (03-01-2004)
Kommentar
Fra : Ukendt


Dato : 03-01-04 19:36

Hejsa.

Tak til alle, jeg har fået noget at arbejde med og fundet en løsning.

--
....::Hilsen Erik


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste