[MySQL] tirage aléatoire via ORDER BY rand()
16 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
-

WebRankInfo - Administrateur du site

- Messages: 15905
- Inscription: Ven Avr 19, 2002 19:51
[MySQL] tirage aléatoire via ORDER BY rand()
je souhaite tirer au sort un des records renvoyés par une requête MySQL
j'utilise le classique
y a-t-il une histoire d'initialiation du random ?
ai-je raté un truc ?
merci...
j'utilise le classique
- Code: Tout sélectionner
ORDER BY RAND()
y a-t-il une histoire d'initialiation du random ?
ai-je raté un truc ?
merci...
-

WebRankInfo - Administrateur du site

- Messages: 15905
- Inscription: Ven Avr 19, 2002 19:51
j'ai fait plusieurs tests et je n'ai toujours pas compris ce qui cloche : selon la complexité de la clause WHERE, l'ordre des résultats est aléatoire ou constant
donc effectivement troops, pour des requêtes comme ton exemple ça marche
mais pour une requête avec notamment 4 conditions (séparées par AND) ça ne marche pas (l'ordre est toujours le même)
donc effectivement troops, pour des requêtes comme ton exemple ça marche
mais pour une requête avec notamment 4 conditions (séparées par AND) ça ne marche pas (l'ordre est toujours le même)
-

mahefarivony - WRInaute accro

- Messages: 11405
- Inscription: Lun Oct 14, 2002 10:00
tu veux dire qu'il affiche toujours la meme chose ?
je viens de lancer ceci chez moi
et ca me sort 7 élements différents a chaque fois.. la table fait 100 enregistrements.
je viens de lancer ceci chez moi
- Code: Tout sélectionner
SELECT champ1,champ2 from psn_maboutique_prod where active=1 and (cid=3 or cid=4) and prixsupp=0 and exposer=0 ORDER BY RAND() LIMIT 7
et ca me sort 7 élements différents a chaque fois.. la table fait 100 enregistrements.
-

WebRankInfo - Administrateur du site

- Messages: 15905
- Inscription: Ven Avr 19, 2002 19:51
oui, toujours la meme chose...
j'ai résolu le pb en mettant rand() as hasard dans la liste des SELECT et en triant par ORDER BY hasard
bizarre
j'ai résolu le pb en mettant rand() as hasard dans la liste des SELECT et en triant par ORDER BY hasard
bizarre
-

mahefarivony - WRInaute accro

- Messages: 11405
- Inscription: Lun Oct 14, 2002 10:00
un paramétrage de mysql peut etre ?
Essaye qqchose comme ça peut-être (pas testé) :
- Code: Tout sélectionner
("SELECT * FROM table ORDER BY rand(" . time() . " * " . time() . ") LIMIT 3");
Re: [MySQL] tirage aléatoire via ORDER BY rand()
WebRankInfo a écrit:je souhaite tirer au sort un des records renvoyés par une requête MySQL
j'utilise le classiquemais malheureusement les résultats semblent toujours affichés dans le même ordre, même si je relance la requête.
- Code: Tout sélectionner
ORDER BY RAND()
y a-t-il une histoire d'initialiation du random ?
ai-je raté un truc ?
merci...
et bien pour moi, c'est normal
rand() renvoit un seul nombre
ca fait donc un truc style select * from table order by 0,5
la methode que tu as choisie apres, cad, celle de mettre un nombre rand différent pour chaque ligne est meilleure.
verifie bien que les rand sont différents d'un select à un autre
Re: [MySQL] tirage aléatoire via ORDER BY rand()
WebRankInfo a écrit:je souhaite tirer au sort un des records renvoyés par une requête MySQL
j'utilise le classiquemais malheureusement les résultats semblent toujours affichés dans le même ordre, même si je relance la requête.
- Code: Tout sélectionner
ORDER BY RAND()
y a-t-il une histoire d'initialiation du random ?
ai-je raté un truc ?
merci...
J'arrive peut-être après la bataille mais comme je n'ai pas vue de vraie solution, je mets mon grain de sel.
J'utilisais cette fonction avec succès jusqu'à il y a peu de temps.
El local, elle marche parfaitement.
J'en suis arrivé à la conclusion qu'il s'agissait probablement d'un changement arrivé avec MySql 5.
J'ai cherché des infos (chez Nexen notamment) sans succès sur un eventuel changement de comportement... Peut-être faut-il ajouter un argument du style rand(n) ou rand(n1,n2)...
C'était histoire de relancer l'affaire si quelqu'un a trouvé the solution...
Bonjour à tous, je pense que le () du rand correspond à la seed.
En fait il est impossible de modéliser l'aléatoire. Par définition on peut pas le faire, car cela est seulement réalisé par la nature, il faut donc fournir à votre fonction rand une graine pour qu'il puisse asseoir son processus pseudo aléatoire. La plupart du temps on prend la date ou l'heure...
Salutations
En fait il est impossible de modéliser l'aléatoire. Par définition on peut pas le faire, car cela est seulement réalisé par la nature, il faut donc fournir à votre fonction rand une graine pour qu'il puisse asseoir son processus pseudo aléatoire. La plupart du temps on prend la date ou l'heure...
Salutations
16 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Le PageRank et le promeneur aléatoire sur le web...
- WebRankInfo lance la publicité collaborative
- La commande link: sur Google
- Gestion des langues et des sessions en PHP / MySQL
- La Google Deskbar API
- Mon site est-il dans la SandBox ? Guide pratique...
- Optimisation du PageRank à l'intérieur d'un site
- Solutions pour augmenter son PageRank Google
- Passage à l'heure d'été/hiver sur un forum phpBB
- Google écrit parfois au webmaster en cas de blacklistage
Qui est en ligne
Utilisateurs parcourant ce forum: Marie-Aude et 0 invités








le forum