Avatar billede tpiil Nybegynder
30. april 2003 - 14:09 Der er 9 kommentarer og
2 løsninger

ORDER BY Rand() kører ikke helt rigtigt

Jeg laver bare et udtræk med en random post, og den fungere ikke 100% både når jeg trækker kun 1 post, men også når jeg trækker eks. 10 poster med random rækkefølge.

Eks. på koden:
$res = mysql_query("SELECT Navn FROM tabel ORDER BY rand() LIMIT 10");
while($udtraek = mysql_fetch_array($res)) {
print $udtraek["Navn"];
}
Avatar billede avminarm Juniormester
30. april 2003 - 14:42 #1
prøv med $res = mysql_query("SELECT *, rand() as random FROM tabel ORDER BY random LIMIT 10");
while($udtraek = mysql_fetch_array($res)) {
print $udtraek["Navn"];
}
Avatar billede tpiil Nybegynder
30. april 2003 - 14:52 #2
har jeg prøvet, det er selve rand() funktionen der ikke gør det godt nok tror jeg...
Avatar billede tipsen Nybegynder
30. april 2003 - 19:42 #3
Hvilken version af MySQL bruger du?

(Din egen SQL-forespørgsel er så vidt jeg kan se helt rigtig!)
Avatar billede tpiil Nybegynder
30. april 2003 - 20:07 #4
Jeg kører den nyeste her (4.0), og på webhotelet ved jeg det ikke...
Avatar billede tpiil Nybegynder
30. april 2003 - 20:10 #5
Tester det lige om jeg får det samme ud...
Avatar billede tpiil Nybegynder
30. april 2003 - 20:31 #6
synes stadig ikke den laver random helt rigtigt...
Avatar billede tpiil Nybegynder
30. april 2003 - 20:31 #7
Den tager mere de nye poster end de gamle...
Avatar billede tipsen Nybegynder
01. maj 2003 - 00:50 #8
prøv at lave en test, hvor du kører den 1 mio. gange og fortæl om det stadig er tilfældet.
Avatar billede melange Nybegynder
01. maj 2003 - 01:10 #9
tpiil << er der vrøvl på både din computer og på dit webhotel ?
Mit webhotel (B-one.nu) lider nemlig under samme problem.

Jeg har nemlig en lille function som (burde) udvælge et tilfældigt citat, hver gang man besøger siden.
Kode til scriptet kan ses her (fejlen er selvfølgelig rettet): http://www.eksperten.dk/spm/344682

PÅ min lokal computer kører scriptet upåklageligt, men så snart jeg uploader scriptet vælger den det første citat i databasen 80% af gangene. 19% af gangene vælger den blandt de 20 første citater, og godt og vel kun 1% af gangene vælger den et af de 10 sidste citater i databasen.

Jeg har ikke lavet nogen direkte måling af hvordan spredningen er, men jeg har lagt det ud på min side så i kan se det selv.

1) Gå ind på http://bottiger.com
2) Tryk på det lille ikon med ! (udråbstegnet) over den hvide introboks.
3) Vælg "Various Quote" (går ud fra i har Cookies slået til)
4) Opdater "mange gange".

Mine personlige erfaringer er at den viser citatet:

"Never argue with idiots, they will bring you down to their level, and then beat you on experience."

80% af gangene, men den spreder det ikke jævnt. Den viser måske citatet 50 gange, og så viser den nogle andre forskellige tilfældige citater 7-10 gange, hvorefter den begynder forfra.

Til sidst skulle jeg måske lige tilføje at B-one kører MySQL 3.23.54.
http://bottiger.com/vmysql.php
Avatar billede Slettet bruger
02. maj 2003 - 02:45 #10
jeg bruger selv.. fandt den her på eksperten engang (og den virker fint ! :))

<?
$res = mysql_query("SELECT *,((Navn*0)+rand()) as random FROM tabel ORDER BY random limit 0,10");

while($udtraek = mysql_fetch_array($res)) {
print $udtraek["Navn"];
}
?>
Avatar billede tpiil Nybegynder
29. august 2003 - 11:01 #11
Det skal da vidst lukkes, bruger stadig rand(), men synes stadig den skodder :)
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

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