Avatar billede nickyc Nybegynder
13. februar 2008 - 09:32 Der er 11 kommentarer og
1 løsning

order by, felt1, felt2?

Hey alle...

Prøver at skrive order by ShowAsTopNews, Created DESC men det fungerer ikke? - Hvad er der galt ?
Avatar billede fennec Nybegynder
13. februar 2008 - 09:36 #1
Får du en fejl??

Men jeg vil gætte på at en af dine kolonner enten er skrevet forkert eller også er created et reserveret ord så der skal [] omkring:

..order by ShowAsTopNews, [Created] DESC
Avatar billede erikjacobsen Ekspert
13. februar 2008 - 09:37 #2
Nemlig - hvad er der galt - hvad er dit problem. Må jeg gætte, så får du ikke sorteret aftagende. Derfor, muligvis:

  ....order by ShowAsTopNews DESC, Created DESC
Avatar billede nickyc Nybegynder
13. februar 2008 - 10:03 #3
Ahhh, fordi ShowAsTopNews ikke var defineret som Integer...

Kan jeg dog få det til at sortere sådan hvis ShowAsTopNews er 1, så skal den vises øverst, hvis ikke, skal den bare sortere efter Created
Avatar billede fennec Nybegynder
13. februar 2008 - 10:20 #4
Via en union ja:

select 0 as sort, kol1, kol2, kol3, created from DinTabel where ShowAsTopNews = 1
union
select 1 as sort, kol1, kol2, kol3, created from DinTabel where ShowAsTopNews <> 1
order by sort, created desc
Avatar billede nickyc Nybegynder
13. februar 2008 - 10:47 #5
Kan det ikke laves på en anden måde, da jeg er begrænset af et system, så kan kun få lov at lave where clauses, og order clauses, kan altså ikke få lov at lave en select...
Avatar billede fennec Nybegynder
13. februar 2008 - 10:55 #6
Nope. Så skal du manuelt først vælge where ShowAsTopNews = 1 og derefter where ShowAsTopNews <> 1
Avatar billede nickyc Nybegynder
13. februar 2008 - 11:19 #7
så sådan her: WHERE ShowAsTopNews = 1 AND ShowAsTopNews <> 1 ORDER BY ShowAsTopNews DESC, Created DESC
Avatar billede fennec Nybegynder
13. februar 2008 - 11:33 #8
Nej. Det kan kun stå i samme sql via union. Det jeg mente var via dit program (C#, VB, ASP eller hvad du nu koder) at lave 2 selects. Så der skal du kalde din funktion 2 gange.

Noget ala:
set rs = getData("where ShowAsTopNews = 1")
...Vis de data...
set rs = getData("where ShowAsTopNews <> 1")
...Vis de data...

Kan du ikke bruge union, er eneste måde at lave udtrækket 2 gange.
Avatar billede fennec Nybegynder
13. februar 2008 - 11:35 #9
Hvilke data er der egentlig i ShowAsTopNews?? Er det en true/false indikator eller strækker den sig vidre så den kan have flere værdier?
Avatar billede nickyc Nybegynder
13. februar 2008 - 11:45 #10
Jamen som sagt, arbejder i et CMS system, hvor det er begrænset hvad man kan, ergo, kan ikke skrive noget asp, php kode, kan kun skrive en WHERE clause, også lave en ORDER BY på det...
Avatar billede fennec Nybegynder
13. februar 2008 - 11:48 #11
Så kan det ikke lade sig gøre, medmindre du er heldig med ShowAsTopNews kolonnen. Kan du ikke beskrive hvilken funktion den har i CMS systemet.
Avatar billede pierrehusted Nybegynder
13. februar 2008 - 16:39 #12
Du kan måske lave det med en CASE i din ORDER BY (hvis du får lov til det).
 
F.eks. sådan her:

ORDER BY
CASE WHEN ShowAsTopNews = 1 THEN 1 ELSE 2 END, Created DESC
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
Computerworld tilbyder specialiserede kurser i database-management

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