/ 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
ORDER BY - SQL Server
Fra : MKJ


Dato : 24-09-05 09:45

Hej

Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.

--
MKJ

 
 
Peter F. Poulsen (24-09-2005)
Kommentar
Fra : Peter F. Poulsen


Dato : 24-09-05 10:28

MKJ wrote:
> Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
> jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
> ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.

Har du prøvet med "ORDER BY ASC"

Ellers, prøv gerne at give et par eksempler på hvordan dine data typisk
ser ud.

--
Med venlig hilsen
Peter Fløistrup Poulsen

MKJ (24-09-2005)
Kommentar
Fra : MKJ


Dato : 24-09-05 13:07

Peter F. Poulsen wrote:
> MKJ wrote:
>
> Har du prøvet med "ORDER BY ASC"
>
> Ellers, prøv gerne at give et par eksempler på hvordan dine data typisk
> ser ud.
>
> --
> Med venlig hilsen
> Peter Fløistrup Poulsen

ASC bruger jeg nu, det giver sorteringer som
Eksempel 1:
Str 10
Str 6
Str 8
Eksempel 2:
Blå
Grøn
Rød

Eksempel 2 er jo rigtig nok, men nr. 1 er forkert. Problemet er feltet
er af typen nvarchar og derfor sortere den som den gør.

I eksempel 1 kunne man bruge "order by LEN([text]) asc, [text] asc" det
giver den rigtige sortering (Str 6, Str 8, Str 10), men så bliver
sorteringen i eksempel 2 forkert (Blå, Rød, Grøn)

Det jeg eftersøger er nok en eller anden funktion der kan lave en
sortereing der er lidt "klogere". Måske med en temp table?


--
MKJ

Jens Gyldenkærne Cla~ (25-09-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-09-05 07:50

MKJ skrev:

> Eksempel 1:
> Str 10

> Eksempel 2:
> Blå

For mig at se er dit grundproblem at du gemmer forskellige
oplysninger i samme felt. Størrelse og farve er to forskellige
egenskaber, derfor bør de ligge i hvert sit felt.

Hvis størrelsen er numerisk, skal feltet til størrelse være af
typen tal for at sorteringen bliver korrekt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Damgaard Niel~ (24-09-2005)
Kommentar
Fra : Thomas Damgaard Niel~


Dato : 24-09-05 11:59

MKJ wrote:
> Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
> jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
> ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.

Jeg gætter på, at du har gemt dine data i en strengtype. Derfor sorterer
basen faktisk dine resultater korrekt. Måske burde du have valgt en
nummerisk datatype til at gemme størrelserne i?

--
Thomas Damgaard Nielsen
http://thomasdamgaard.dk/
Svar venligst under det du citerer. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Peter Lykkegaard (24-09-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 24-09-05 13:02

"MKJ" wrote
>
> Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
> jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
> ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.
>
Hvordan ser dine data ud når de ligger i tabellen?

Jeg vil formode at du kan løse problemet ved at lave foranstillede nuller
til feltets længde
Ved alphanumeriske data så gør du ingenting

Fx
-- -------------------
CREATE Function fn_ZeroFill (@Param VarChar(255), @Len Int)
Returns VarChar(255)
AS
BEGIN

Declare @Data VarChar(255)

SET @Data = LTrim(RTrim(@Param))

IF IsNumeric(@Data) = 0
RETURN @Data
-- END IF

IF Len(@Data) >= @Len
RETURN @Data
-- END IF

RETURN replicate('0', @Len - Len(@Data)) + @Data
END
Go
-- -------------------

select dbo.fn_ZeroFill(' 80', 10)
Go
-- -------------------

- Peter



Jan Bachman (24-09-2005)
Kommentar
Fra : Jan Bachman


Dato : 24-09-05 17:28

On Sat, 24 Sep 2005 10:45:22 +0200, MKJ <m@ds.dk> wrote:

>Hej
>
>Jeg har en liste med forskellige størrelser (Str 6, Str 8, Str 10), Når
>jeg laver en SELECT bliver de sorteret på denne måde (Str 10, Str 6, Str
> 8) findes der en måde så de bliver sorteret rigtigt? Listen indeholder
>ikke altid størrelser i så tilfælde skal der sorteres alfabetisk.

Prøv med:
ORDER BY Len(felt), felt

/Jan

Jan Bachman (24-09-2005)
Kommentar
Fra : Jan Bachman


Dato : 24-09-05 17:30

>Prøv med:
>ORDER BY Len(felt), felt

Det duer dog kun til dine størrelser...

/Jan

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

Månedens bedste
Årets bedste
Sidste års bedste