Avatar billede Slettet bruger
28. august 2008 - 11:10 Der er 9 kommentarer og
1 løsning

Sorterer på tid og klik

Hej.
Har en database med billeder.
Skal have lavet et udtræk som sorterer på nyeste efter dato og derefter på flest klik. Hvordan laver jeg det?

Har følgende, som jeg godt ved ikke virker - men hvordan får jeg det sat rigtigt op som følgende illustrerer?

strSQL = "SELECT TOP 15 * FROM billeder ORDER BY klik DESC AND ORDER BY Tid

Mvh.
Henrik
Avatar billede Slettet bruger
28. august 2008 - 11:15 #1
Hmmm.. ved ikke lige om jeg fik forklaret godt nok hvad jeg skal have ud.
Det var vist også lidt kludret, men det giver nok mere mening hvis man skal jeg gerne vil have dem med flest klik ud, fra de sidste 7 dage. Mit dato felt har følgende data: dd-mm-xxxx - er det muligt?
Avatar billede pidgeot Nybegynder
28. august 2008 - 11:15 #2
Du skal have en kommasepareret feltliste, ikke flere ORDER BY. Samtidigt skal du altid angive DESC hvis det skal være i faldende rækkefølge (ASC er implicit når intet andet er angivet)

Med andre ord:
SELECT TOP 15 * FROM billeder ORDER BY Tid DESC, klik DESC

(fordi tid er den "vigtigste" i din sortering, skal den komme først)
Avatar billede pidgeot Nybegynder
28. august 2008 - 11:16 #3
Sørg i øvrigt for at din dato rent faktisk er et dato-felt, og ikke et tekst-felt. Ellers fungerer det ikke (hvis en dato overhovedet skal kunne sorteres som tekst, skal den gemmes som YYYY-MM-DD - men det er bedre at bruge den datatype databasen har i forvejen)
Avatar billede Slettet bruger
28. august 2008 - 11:23 #4
Super, tak.
Så har jeg fået det til at virke med at den tager alle de nyeste og sorterer dem efter flest klik. Men hvad hvis jeg vil have det fra de sidste 7 dage? Mit dato felt er af typen "dato".
Avatar billede pidgeot Nybegynder
28. august 2008 - 11:27 #5
Nu lægger jeg lige mærke til at det er MySQL du har posted det i - men det passer ikke sammen med at du skriver TOP (det er en MSSQL/Access-ting, MySQL bruger LIMIT til sidst).

Bekræft lige hvilken database du rent faktisk bruger - så kan jeg nemmere hjælpe med det med de 7 dage.
Avatar billede Slettet bruger
28. august 2008 - 11:28 #6
Ups.. :-) Genialt.. hehe

Access
Avatar billede pidgeot Nybegynder
28. august 2008 - 11:49 #7
Så vidt jeg ved kan du trække 7 fra Date() og dermed få de 7 sidste date:

SELECT TOP 15 * FROM billeder WHERE dato > Date() - 7 ORDER BY Tid DESC, klik DESC
Avatar billede Slettet bruger
28. august 2008 - 13:04 #8
Det var den ikke lige helt vild med.

No value given for one or more required parameters.
Avatar billede pidgeot Nybegynder
28. august 2008 - 13:07 #9
Den kan jeg ikke lige gennemskue hvorfor den kommer med. Jeg arbejder ikke med Access normalt, så jeg er ikke vant til at håndtere den slags ting.
Avatar billede Slettet bruger
28. august 2008 - 13:29 #10
Ok, men tak for hjælpe. :-)
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