Avatar billede robson Nybegynder
03. oktober 2003 - 10:08 Der er 11 kommentarer og
1 løsning

Order by tal mod tomt felt

Jeg har en tabel hvor jeg ønsker et udtræk der er order by en rækkefølge jeg har angivet!
Men det er ikke alle rækker der har en værdi i rækkefølgen, dvs de første 10 rækker har fx værdierne 1-10 mens resten ingen værdi har - tomt felt, NULL
Når jeg laver en order by på dette så kommer alle NULL værdierne øverst - hvilket ikke er hensigten!!
Jeg kan selvfølgelig pr. default tildele rækkefølgen en høj værdi i DB'en således at der fx står 10000 istedet for NULL, men det må kunne løses på en mere elegant måde...
Har du svaret???
Avatar billede sarid Nybegynder
03. oktober 2003 - 10:16 #1
Ændre sortering til det modsatte DESC. (ASC er default)
Avatar billede robson Nybegynder
03. oktober 2003 - 10:30 #2
duer ikke fordi jeg så får dette resultat:
3
2
1
NULL
NULL
NULL.... osv

Hvor det gerne skulle blive til:
1
2
3
NULL
NULL.... osv
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 10:51 #3
I mange SQL-er kan du teste for om en værdi er null (eksempel fra MySql):

SELECT username,dddd,if(isnull(dddd),99999,dddd) as o FROM child order by o asc

(undskyld de skøre navne...). Det jeg gør er at tage de felter ud jeg
skal bruge (username, dddd) og så lave et ekstra, som alene bruges til
sortering. Er det null, indsættes et megastort tal (99999), så det altid
kommer nederst.

Om det virker i din database ved jeg ikke. Det kunne måske have været
smart at skrive hvad du bruger.
Avatar billede robson Nybegynder
03. oktober 2003 - 10:53 #4
sorry - du har helt ret erikjacobsen

jeg udvikler på en SQL Server!!!
Avatar billede hiks Nybegynder
03. oktober 2003 - 10:55 #5
så skal du da sikkert have et kig her...:

http://www.sqljoint.com/article.aspx?ArticleId=11
Avatar billede robson Nybegynder
03. oktober 2003 - 11:06 #6
hiks -- fedt link  :o)
det virker hvis jeg ændrer til:
... ORDER BY CASE WHEN Raekkefoelge IS NULL THEN 1 ELSE 0 END, Raekkefoelge

...jeg er dog lidt i tvivl om hvorvidt det er nødvendigt at lave en sorteringskolonne og et efterfølgende index som det forslås på siden du sendte link til??? Giver det nogen former for problemer blot at bygge SQL'en op med den ovenfor nævnte ORDER BY??
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 11:10 #7
Både min, og den sidste her, koster tid. Men hvor mange data har du typisk?
Avatar billede robson Nybegynder
03. oktober 2003 - 11:11 #8
op imod 2000 rækker, hvilket jeg lige har testet på og det er ikke noget problem tidsmæssigt!!!
Avatar billede hiks Nybegynder
03. oktober 2003 - 11:34 #9
tak...

Det er jo alt andet lige performance der snakkes om - og hvis det er ligegyldigt og det virker for dig så er det jo godt.

Jeg skulle mene at du skulle noget højere op i datamængde inden det giver dig nogle problemer.

Jeg har dog aldrig fået det til at virke ordentligt uden sorteringskolonnen. :)

/hiks
Avatar billede robson Nybegynder
03. oktober 2003 - 11:38 #10
OK - jeg lader SQL være som den er nu og hvis der opstår problemer forsøger jeg med sorteringskolonnen!!

hiks og erikjacobsen kan I ikke smide et svar afsted så der kan deles lidt points ud  :o)

Tak for deltagelsen !!
Avatar billede hiks Nybegynder
03. oktober 2003 - 11:43 #11
takker... og go weekend..

/hiks
Avatar billede erikjacobsen Ekspert
03. oktober 2003 - 11:47 #12
(frafalder)
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