Bekijk Volledige Versie : Random selecteren met MySQL
Bas Hendriks
16/04/03, 16:05
Hallo,
Ik probeer random banners te selecteren uit een MySQL tabel met de volgende
statement:
SELECT no, doelurl, butten_url, rubriek, einddatum FROM banners where
(butten_url != "") AND ((einddatum >= NOW()) OR einddatum = "0000-00-00")
ORDER BY RAND() LIMIT 0,1;
Het resultaat is echter niet random, misschien is het beter om de unieke key
(no, auto increment) te gebruiken
om random rows te selecteren?
Iemand goede ideeën/voorbeelden?
Alvast bedankt!
--
Met vriendelijke groet,
Bas Hendriks
Bas Hendriks
16/04/03, 16:20
> Ik probeer random banners te selecteren uit een MySQL tabel met de
volgende
> statement:
> SELECT no, doelurl, butten_url, rubriek, einddatum FROM banners where
> (butten_url != "") AND ((einddatum >= NOW()) OR einddatum = "0000-00-00")
> ORDER BY RAND() LIMIT 0,1;
>
> Het resultaat is echter niet random, misschien is het beter om de unieke
key
> (no, auto increment) te gebruiken
> om random rows te selecteren?
Alle lezers bedankt, ik doe het nu op de volgende manier:
SELECT no, doelurl, butten_url, banner_url, (RAND()) AS myRandom FROM
banners ORDER BY myRandom LIMIT 0,1;
en dit lijkt het goed te doen.
(Even mysql.org doorspitten)
Groetjes,
Bas
I <3e9d612b$0$29363$1b62eedf@news.euronet.nl>, Bas Hendriks skrev:
> ORDER BY RAND() LIMIT 0,1;
> Het resultaat is echter niet random, misschien is het beter om de unieke key
De RAND() functie van MySQL is ronduit slecht (MySQL Ab zelf geeft dit
ook aan, trouwens).
Ik denk dat je er beter aan doet om een satellietontvanger aan je server
te hangen en vervolgens ruimteruis te voeren aan /dev/urandom.
Vervolgens kun je daar je random waarden uit halen.
--
Wouter web www.uwsworld.com mail uws@xs4all.nl
so i'll be your liqour demons will drown :: and float away -- placebo
Nico Coesel
16/04/03, 22:35
"Bas Hendriks" <bas@router.cybox.nl> wrote:
>Hallo,
>
>Ik probeer random banners te selecteren uit een MySQL tabel met de volgende
>statement:
>SELECT no, doelurl, butten_url, rubriek, einddatum FROM banners where
>(butten_url != "") AND ((einddatum >= NOW()) OR einddatum = "0000-00-00")
>ORDER BY RAND() LIMIT 0,1;
>
>Het resultaat is echter niet random, misschien is het beter om de unieke key
>(no, auto increment) te gebruiken
>om random rows te selecteren?
>
>Iemand goede ideeën/voorbeelden?
>Alvast bedankt!
Bij iedere vertoning een time-stamp updaten (millisecondenteller van
de server bijvoorbeeld). Vervolgens de banner die het langst geleden
getoond is selecteren. Werkt als een speer en geen ontvreden klanten
want iedere banner wordt evenveel getoond.
--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vinden? Adresboekje.nl