Avatar billede Ulrich Seniormester
05. februar 2021 - 16:36 Der er 3 kommentarer og
2 løsninger

Random udtræk i SQL-streng.

Jeg har brug for at trække 4 random linjer ud fra en Access database.
Bruger følgende:
"SELECT TOP 4 rnd(ID),* FROM SideLinkListe WHERE VisesPaaForside > '' ORDER BY rnd(ID) DESC"
Det er godt nok forskellige der kommer ud, men det er det samme hver gang.
Har Googlet og fundet flere der skriver om dette, men ingen direkte løsning.
Nogen der kan hjælpe men en streng der trækker 4 random linjer ud?
Avatar billede bsn Forsker
05. februar 2021 - 16:45 #1
Avatar billede Gustav Ekspert
05. februar 2021 - 17:28 #2
Den enkle løsning er at medtage Timer():

SELECT TOP 4
    Rnd(-Timer()*[ID]) AS [Rnd Generator], *
FROM
    SideLinkListe
WHERE
    VisesPaaForside Is Not Null
ORDER BY
Rnd(-Timer()*[ID])


Ellers studér min artikel:
https://www.experts-exchange.com/articles/34471/Truly-Random-Numbers-in-VBA.html?preview=kYXBu8KHTtA%3D
Avatar billede Ulrich Seniormester
05. februar 2021 - 18:04 #3
bsn har sat svar ind på løsning:
http://actuar.dk/torben/show.asp?id=randomrecords

Gustav, din løsning virker ikke, din løsning gør det som der er problemet:
Problemet med MS Access er, at man ikke kan skrive SELECT felt FROM tabel ORDER BY Rnd og så forvente at den laver et nyt tilfældigt tal til hver record, som man så sorterer efter. Der vil kun blive dannet ét tilfældigt tal, som gives til alle records.
Ydermere, så vil det 'tilfældige' tal være det samme hver gang man spørger databasen. F.eks. giver SELECT Rnd altid det samme.
Avatar billede Gustav Ekspert
05. februar 2021 - 19:05 #4
Du må gøre et eller galt, for jeg ville jo ikke poste noget, der ikke virker; og det gør forespørgslen, fordi Timer og et kald til et felt (ID) tvinger Rnd til hver gang at starte et nyt sted i rækken af pseudo-tilfældige tal - det samme som Randomize gør i VBA.

Det er desuden den almindeligt brugte helt enkle løsning på dit velkendte problem.
Avatar billede Ulrich Seniormester
06. februar 2021 - 23:49 #5
Gustav, du har ret, din løsning virker også.
Den er mere enkel end den bsn kom med.
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