Avatar billede dragnor Juniormester
22. oktober 2007 - 18:49 Der er 15 kommentarer og
3 løsninger

vælge top post

Hej Ekperter

Hvis jeg har en ganske almindelig forespørgsel kan jeg så fortælle den at en bestemt post skal stå øverst?
For hvis jeg vælger ORDER BY så gør den det jo alfabetisk rækkefølge.
Avatar billede w13 Novice
22. oktober 2007 - 19:04 #1
Bare drop Order By. Så vælger den automatisk den første.
Dvs.:

"Select Top 1 * From [tabel]"
Avatar billede w13 Novice
22. oktober 2007 - 19:05 #2
Hvis det er det, du mener? Jeg må indrømme, at jeg ikke er helt sikker på, jeg forstår dit spørgsmål.
Avatar billede w13 Novice
22. oktober 2007 - 19:06 #3
Hvis du vil have den til at begynde med en bestemt post, må du filtrere de foregående fra med en WHERE. F.eks. WHERE [id] > 12 eller lignende.
Avatar billede dragnor Juniormester
22. oktober 2007 - 19:08 #4
Hvis jeg har

SELECT id FROM Tabel

Resultat

1
2
3
4


Hvis jeg så vil have at den skal skrive 3 ud før de andre, dvs:

3
1
2
4

Kan man det?
Avatar billede dragnor Juniormester
22. oktober 2007 - 19:08 #5
De andre poster skal med
Avatar billede w13 Novice
22. oktober 2007 - 19:21 #6
Det kan du ikke. Eller jo, selvfølgelig kan du det, men så vidt jeg ved, må de blive i 2 SQL-kald. Det er jo en stor undtagelse, at 3 skal op foran, men bortset fra det skal alt være normalt.

Hvad skal du bruge det til?
Avatar billede soerenlyn Nybegynder
22. oktober 2007 - 19:23 #7
Man kunne eventuelt putte id'erne i et array når du henter dem, for så kan du vælge præcis det element du vil og skrive det først, og derefter gennemløbe array'et og skrive alle undtagen det element der skal stå først ....
Så valget står mellem et array eller et ekstra sql-kald ? :D
Avatar billede w13 Novice
22. oktober 2007 - 19:26 #8
Ja ikke en helt tosset idé med et array. Især hvis du vil lave flere undtagelser, kan det være smart. Men hvis det kun er post 3, f.eks., som du vil ha' øverst, så kan det laves med et ekstra SQL-kald, som kun kommer til at fylde 2 linjer ekstra kode.
Avatar billede dragnor Juniormester
22. oktober 2007 - 19:28 #9
Det tænkte jeg nok blev nødvendigt :-( håbede der var en nem sql løsning.
Avatar billede w13 Novice
22. oktober 2007 - 19:29 #10
Er det til en ASP-side, PHP, direkte i Access, eller hvordan?
Avatar billede gammelhat Nybegynder
22. oktober 2007 - 19:29 #11
måske du kunne snige en union ind

select * from tabel1 where id=3 union all select * from tabel1 where id<>3
Avatar billede soerenlyn Nybegynder
22. oktober 2007 - 19:29 #12
Jeg tror ikke der er andre smarte måder en et sql kald eller et array desværre..
Avatar billede soerenlyn Nybegynder
22. oktober 2007 - 19:30 #13
gammelhat -> Hvis det virker, så er det smart ! :)
Avatar billede dragnor Juniormester
22. oktober 2007 - 19:55 #14
desværre gammelhat, det kunne den desværre ikke :-( så jeg må lave det i ASP koden. Men tak for hjælpen alle sammen. jeg vil mene det er w13 der bør have mine point, er alle parter tilfredse med det?
Avatar billede w13 Novice
22. oktober 2007 - 19:59 #15
Jeg vil gerne dele med Soerenlyn. Ærgrer mig over, jeg ikke foreslog arrayet. =)

Måske Gammelhat vil foreslå en ændring, kunne jo være, han kunne få sin idé til at virke, og i så fald bør han få pointene.
Avatar billede soerenlyn Nybegynder
22. oktober 2007 - 19:59 #16
Ja hvis du bælger at bruge 2 sql-kald, så skal pointene gå til w13 :P
Avatar billede fdata Forsker
22. oktober 2007 - 22:28 #17
I kredser om den rigtige løsning. Her er den med et postnr.eksempel:
SELECT Postnumre.*,1 AS Sort FROM Postnumre WHERE Postnr=4000
UNION
SELECT Postnumre.*,2 AS Sort FROM Postnumre WHERE Postnr<>4000
ORDER BY Sort, Postnr
Avatar billede fdata Forsker
25. oktober 2007 - 21:58 #18
Takker for point
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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