Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:11 Der er 11 kommentarer og
1 løsning

Tilfældig post i tabel

Hvordan vælger jeg lettest en tilfældig post ud i en tabel. Hvis det kan gøres ved hjælp af (næsten) ren SQL ville det helt klart være at foretrække...
Avatar billede zeth Nybegynder
08. januar 2002 - 17:13 #1
SELECT * FROM tabel ORDER BY RAND() LIMIT 1
Avatar billede zeth Nybegynder
08. januar 2002 - 17:14 #2
ellers se dette spørgsmål

http://www.eksperten.dk/spm/155956
Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:16 #3
Ja okay, det er så hvis vi er i SQL-serveren. Nu glemte jeg bare at sige, at det er Access vi arbejder i :-)

Yeps, kender godt det spørgsmål - det er stillet af mig selv for et par timer siden ;-)
Avatar billede medions Nybegynder
08. januar 2002 - 17:18 #4
du kan vidst godt bruge dette script:

Sql = \"Select * from Bannere\"
Set rs = Conn.Execute(Sql)

Dim vis, Rs, DBPath, Ialt, sql, Record, RandNum, i
Function Show()
Randomize
RandNum = Int(Rnd * Ialt) + 1
rs.MoveFirst
For i = 1 to RandNum - 1
rs.MoveNext
next
Response.Write \"<a href=\'http://\" & rs(\"http\") & \"\'><img src=\'\" & rs(\"banner\") & \"\' alt=\'\" & rs(\"info\") & \"\' border = \'0\' class=\'ramme\'></a>\"
end function
%>
<p align=\"center\"><% Response.Write show() %></p>

//Rune
Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:19 #5
Yeps, det kunne bruges. Men kan det ikke gøres lidt lettere? Meget gerne vha noget smart SQL...
Avatar billede medions Nybegynder
08. januar 2002 - 17:23 #6
well, jeg kan mener bestemt ikke det kan gøres lettere... -ihvertfald ikke bedere...!
Avatar billede zeth Nybegynder
08. januar 2002 - 17:27 #7
Hmnnn.. altså jeg kender ikke helt vildt meget til Access, men kan man ik lave noget der ligner

SELECT * TOP 1 FROM tabel ORDER BY RND()

??
Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:27 #8
Det må i hvert fald kunne gøres bedre!
Din metode er okay når det blot er en lille tabel med nogle filnavn, men hvad nu hvis, det er en kæmpe tabel med mange tusinde poster. Så er det ikke specielt hurtigt at starte i starten af et rs og så køre måske 2000 poster frem vha rs.MoveNext...

Men okay, i Access er der måske ikke andet at gøre... Måske skulle man skifte til SQL-serveren?!?
Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:28 #9
zeth> Har også lige prøvet det. Men den sætter TOP 1 ud af drift (mystisk, men sandt)... Desuden er det de samme \"tilfældige\" poster den kommer med hver gang...
Avatar billede zeth Nybegynder
08. januar 2002 - 17:33 #10
Hmnn... Lyder underligt! Men hvis du skal bruge medoins metode, så brug for guds skyld RS.Getrows når det er store tabeller... se nedenstående link..

http://activedeveloper.dk/aspdigital/2001081401.asp
Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:36 #11
zeth> Yeps, bare rolig...
Avatar billede nielslbeck Nybegynder
08. januar 2002 - 17:47 #12
Her har vi et godt svar:
http://activedeveloper.dk/locator.asp?guid=001000000283

Som der også står på ovenstående side, er det nok lidt bedre at bruge: rs.move(x) i stedet for rs.movenext() hvis man vil benytte medions løsning...

Men desværre ikke noget her på Eksperten jeg kunne bruge :-(
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operations Center ved Cyberdivisionen

Roskilde Universitet

AV Tekniker

HusCompagniet A/S

Senior data engineer