Avatar billede jb_jensen Nybegynder
29. marts 2011 - 06:25 Der er 7 kommentarer og
1 løsning

ORDER BY

Hej Eksperter,

Findes der nogen mulighed for at sorter et SQL udtræk i en bestem rækkefølge, f.eks.:

ID (2,6,1,3,5,4) osv osv?

Call opentbl("select * from tabel ORDER BY ET ELLER ANDET).
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 08:07 #1
du kan skrive det som et udtryk:
order by (Id % 2), Id

Denne sorterer først efter % 2 (lige eller ulige) og så efter id, så resultatet bliver:

2,4,6,1,3,5


Så hvis du kan finde et "udtryk" der beregner rækkefølgen kan du gøre det.
Avatar billede softspot Forsker
29. marts 2011 - 08:53 #2
Hvis du kender antallet og de faktiske id'er du skal have sorteret, kan du oprette en midlertidig tabel hvori du lægge de id'er du skal have sorteret og i den rækkefølge du skal have dem sorteret. Den midletrtidige tabel skal have automatisk id-generering.

Derefter kan du joine den midlertidige tabel sammen med din hovedtabel på id'et og sortere efter det automatiske id i den midlertidige tabel.

Hvad skal du bruge dette til? Det lyder umiddelbart lidt "kunstigt" at trække data ud på denne måde (dermed ikke sagt, at du ikke kan have grunde til at ville gøre dette)... men det kunne være der var andre måder at få dine data i den rækkefølge du har behov for.
Avatar billede jb_jensen Nybegynder
29. marts 2011 - 09:08 #3
Hej MCB2011,

Kan ikke lave et eksempel på hvordan det vil se i min string?

Softspot jeg vender tilbage hvis jeg ikke får denne til at virke.
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 09:17 #4
Hej jb_jensen

Som Softspot skriver, hvis du kan komme med forklaringen på hvorfor den skal sorteres som den skal, så kan vi (muligvis) også finde en nem løsning til dig.
Avatar billede jb_jensen Nybegynder
29. marts 2011 - 09:28 #5
Ok, det er fordi jeg har en række identiteter f.eks.

1 = Havemand
2 = Direktør
4 = Chauffør

De trækkes ikke fra en tabel, men er "bare" defineret af mig, nu har jeg så lavet et DB udtræk og for at undgå for mange loops i hinanden, vil jeg gerne gøres således at Direktør f.eks. kommer først osv., der er 9 typer i alt.
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 10:04 #6
så er der en mere elegant løsning, hvor du både får systematiseret din sortering og dine typer.

Opret en tabel (typeTabel):
TypeId <> Navn <> Sortering
1 <> Havemand <> 3
2 <> Direktør <> 1
4 <> Chauffør <> 2

Så laver du et inner join:
select *
from tabel
inner join typeTabel
on Id = TypeId
ORDER BY typeTabel.Sortering
Avatar billede jb_jensen Nybegynder
29. marts 2011 - 10:20 #7
Det var en god ide, tak for det!
Avatar billede mcb2001 Nybegynder
29. marts 2011 - 10:27 #8
velbekommen.

Hvis du mener at dette var løsningen, så kan du afgive point og derved lukke spørgsmålet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester