|
| 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
| |
|
|