Avatar billede krogstrup Nybegynder
31. marts 2006 - 23:59 Der er 6 kommentarer og
1 løsning

Udtræk fra database skal være i random rækkefølge hver gang

Hvad er mest almindeligt benyttede metode til at sørge for at et databaseudtræk kommer i fuldstændig random rækkefølge hver gang kaldet sker. Jeg ved at der findes en random funktion i ASP, men kan ikke helt gennemskue om den kan bruges i denne sammenhæng.

Normalvis henter jeg data fra mine tabeller ud i arrays. Men jeg er i tvivl om jeg allerede i SQL kaldet kan sørge for at få mine records i tilfældig rækkefølge, eller om man først henter records ud i sorteret rækkefølge og derefter manipulerer det array der indeholder data.

På forhånd tak :-)
Avatar billede eagleeye Praktikant
01. april 2006 - 00:03 #1
Hvilken database bruger du?

Normalt gør man det via SQL sætningen og alt efter hvilken database det er vil SQl sætningen se forskellig ud.
Avatar billede krogstrup Nybegynder
01. april 2006 - 00:04 #2
bruger Access
Avatar billede eagleeye Praktikant
01. april 2006 - 00:09 #3
Ok det så den hvor det er mest besværligt :) da access faktisk har en rnd inbygget men den giver ikke en ny rækkefølge hver gang. Så det bliver en blanding af ASP og SQL.

Prøv sådan her:


randomize
R=clng(100000*rnd)  '100000 er et "tilfældigt" valgt du kan evt prøve at rette det.
SQL = "SELECT * FROM Tabel ORDER BY rnd(-(ID)*" & R & ")"
Avatar billede thesurfer Nybegynder
01. april 2006 - 00:19 #4
Hmm.. man plejer at sige, at intet er tilfældigt.. :-)

Eksempel:
Vælg tilfældige 5 tal mellem 1 og 100000:
20
20
20
20
20

Det er 5 tilfældige tal, der intet har med hinanden at gøre, da det er "individuelle" tal.. selvom det er samme tal.. :-)

Den eneste måde hvor du 100% får et nyt udtræk hver gang, er at "huske" de random værdier du har haft..

Eksempel:
1) generer random værdi
2) indlæs de værdier, der allerede har været der
2a) hvis den nuværende værdi eksisterer i listen med de gamle random værdi, hop til #1
3) tilføj den nye random værdi til listen og tidligere værdier
4) lav dit udtræk med den nuværende random værdi

/theSurfer
Avatar billede krogstrup Nybegynder
01. april 2006 - 00:31 #5
eagleeye >
Det virker perfekt - jeg må dog erkende at jeg ikke helt forstår hvad der foregår her: ORDER BY rnd(-(ID)*" & R & ")"
Kunne du evt. forklare det ?
Og så må du i øvrigt meget gerne smide et svar :-)

thesurfer >
Jeg kan godt se din pointe, men så vigtigt er det heller ikke at output er 100% forskelligt hver gang. Så jeg vælger at benytte eagleeye´s løsning. Men tak for input under alle omstændigheder.
Avatar billede eagleeye Praktikant
01. april 2006 - 00:50 #6
Det er en bladning af et par ting først skal man give access et forseklligt tal hver gang og det gøres med:
R=clng(100000*rnd)

Der ud over ganger man så R med ID (autonummer kolonne) for igen at få et forskelligt for hver række.

Når man så sætter minus foran tallet i rnd(-tal) tvinger man rnd til at give et nyt random for hvert minus tal.
Avatar billede krogstrup Nybegynder
01. april 2006 - 01:20 #7
takker for forklaring :-)
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