Avatar billede getalife Nybegynder
02. februar 2005 - 00:27 Der er 11 kommentarer og
1 løsning

Random udtræk med limit

Jeg har et lille problem med et random udtræk fra en Mysql.
Der er sikkert en meget simpel løsning, men jeg har prøvet og prøvet og ledt og ledt.. men uden held.

Jeg har en database med x antal rows.
Ud fra disse rows vil jeg gerne lave et random udtræk med en limit på feks 10 med en Order By på et felt.

Lad os sige min SQL ser således ud:
StrSQL2 = "SELECT * FROM tabelnavn ORDER BY Downloads desc LIMIT 10"

Er der en nem måde at gøre det på?
Avatar billede hmortensen Nybegynder
02. februar 2005 - 00:30 #1
Må blive sådan her:
StrSQL2 = "SELECT * FROM tabelnavn ORDER BY Downloads DESC, RAND() LIMIT 10"
eller
StrSQL2 = "SELECT * FROM tabelnavn ORDER BY RAND() LIMIT 10"
Avatar billede getalife Nybegynder
02. februar 2005 - 00:42 #2
Den har jeg prøvet, og den tager altid nummer 1 :(
Avatar billede hmortensen Nybegynder
02. februar 2005 - 00:49 #3
Nu har jeg lige prøvet det af, og den skal være sådan her:
StrSQL2 = "SELECT * FROM tabelnavn ORDER BY RAND(), Downloads DESC LIMIT 10"

eller skal du bruge det andet forslag, jeg kom med.
Avatar billede getalife Nybegynder
02. februar 2005 - 00:57 #4
Når jeg skriver StrSQL2 = "SELECT * FROM tabelnavn ORDER BY RAND(), Downloads DESC LIMIT 10", så vælger den bare en random fra hele databasen og ikke ud fra sorteringen.
Det samme gør StrSQL2 = "SELECT * FROM tabelnavn ORDER BY RAND() LIMIT 10"

http://www.download.dk/index.asp?selOS=Spil <-- den øverste af Ugens Valg
Avatar billede hmortensen Nybegynder
02. februar 2005 - 01:01 #5
Prøv at komme med noget eksempel data, for jeg tror jeg misforstår dig lidt.
Altså noget data, og hvad du gerne vil ha ud.
Avatar billede getalife Nybegynder
02. februar 2005 - 01:11 #6
Min DB er en liste af software (i dette tilfælde spil) med navn, beskrivelse osv osv osv. En af disse kolonner er en "tæller" der bliver lagt en til hver gang et program bliver hentet (en for dag, uge, måned og ialt) og er af typen Int. Det er måned der skal sorteres på og der skal vælges en af de ti mest downloadede programmer een gang om ugen (det med at gemme kommer senere)

Min SQL ser således ud lige nu:
StrSQL2 = "SELECT * FROM programmer WHERE OS = 'Spil' AND Thumbnail = '2' Order by RAND(), Downloadsmaaned desc Limit 10"

Hvilket data vil du gerne se? Mine rows er lidt for store til at kunne paste en hel herind :)
Avatar billede hmortensen Nybegynder
02. februar 2005 - 02:26 #7
Jeg tror at du bliver nødt til at bruge din oprindelige forespørgelse:
StrSQL2 = "SELECT * FROM tabelnavn ORDER BY Downloads desc LIMIT 10"

Så kan du hive det ud i et array, og derefter vælge en tilfældig via din ASP
Avatar billede getalife Nybegynder
03. februar 2005 - 01:22 #8
øv, det ville nu være dejlig nemt at gøre det på den anden måde.. men det er somom den "overser" anden del af Order By.

Smider du et svar?
Avatar billede getalife Nybegynder
03. februar 2005 - 01:22 #9
Og tak for hjælpen.. glemte jeg at sige
Avatar billede hmortensen Nybegynder
03. februar 2005 - 18:19 #10
Ta dem bare selv, da jeg ikke fik løst dit problem.
Avatar billede getalife Nybegynder
04. februar 2005 - 23:09 #11
arj.. det er tanken der tæller.. og nu har du brugt tid på at hjælpe.
Avatar billede getalife Nybegynder
26. august 2005 - 09:52 #12
ooog luk
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