|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
WebRankInfo Administrateur du site

Inscrit le: 19 Avr 2002 Messages: 13765 Localisation: Toulouse
|
Posté le : Sam Sep 04, 2004 22:44 Sujet du message: [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
mais malheureusement les résultats semblent toujours affichés dans le même ordre, même si je relance la requête.
y a-t-il une histoire d'initialiation du random ?
ai-je raté un truc ?
merci... |
|
| |
|
 |
lou WRInaute impliqué

Inscrit le: 09 Mai 2004 Messages: 477
|
Posté le : Sam Sep 04, 2004 22:46 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
| bah nan ça devrai marcher... |
|
| |
|
 |
Gaëtan R. WRInaute impliqué

Inscrit le: 26 Avr 2004 Messages: 311 Localisation: Aux frontières du 44, 35 et 56
|
Posté le : Sam Sep 04, 2004 22:50 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
Ben, moi je vois pas ce qui peut clocher, j'utilise le ORDER BY Rand() de cette façon.
Sauf que moi j'écris ORDER BY Rand(), ça a peut être une importance de mettre la majuscule en début et minuscules après. |
|
| |
|
 |
squawk WRInaute accro

Inscrit le: 22 Mar 2004 Messages: 5985
|
Posté le : Sam Sep 04, 2004 23:07 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
| Faut peut etre mettre un chiffre dans la parenthèse ? |
|
| |
|
 |
troops WRInaute passionné

Inscrit le: 16 Mar 2003 Messages: 807 Localisation: FRANCE
|
Posté le : Sam Sep 04, 2004 23:10 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
SELECT * FROM tbl_name ORDER BY RAND() LIMIT 1
Un exemple qui marche |
|
| |
|
 |
WebRankInfo Administrateur du site

Inscrit le: 19 Avr 2002 Messages: 13765 Localisation: Toulouse
|
Posté le : Sam Sep 04, 2004 23:33 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
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) |
|
| |
|
 |
mahefarivony WRInaute accro

Inscrit le: 14 Oct 2002 Messages: 11300
|
Posté le : Sam Sep 04, 2004 23:52 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
tu veux dire qu'il affiche toujours la meme chose ?
je viens de lancer ceci chez moi
| Code: |
| 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. |
|
| |
|
 |
troops WRInaute passionné

Inscrit le: 16 Mar 2003 Messages: 807 Localisation: FRANCE
|
Posté le : Sam Sep 04, 2004 23:57 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
| Montre ta requete, modifie juste le nom des champs et table pour la "confidentialité" que je vois ça |
|
| |
|
 |
WebRankInfo Administrateur du site

Inscrit le: 19 Avr 2002 Messages: 13765 Localisation: Toulouse
|
Posté le : Dim Sep 05, 2004 0:00 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
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 |
|
| |
|
 |
mahefarivony WRInaute accro

Inscrit le: 14 Oct 2002 Messages: 11300
|
Posté le : Dim Sep 05, 2004 0:04 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
| un paramétrage de mysql peut etre ? |
|
| |
|
 |
Bool WRInaute passionné

Inscrit le: 26 Fév 2004 Messages: 899 Localisation: Lyon
|
Posté le : Dim Sep 05, 2004 1:44 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
| WebRankInfo a écrit: |
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 |
curieux, parce que la doc dit exactement le contraire  |
|
| |
|
 |
Bobez WRInaute passionné

Inscrit le: 20 Mai 2004 Messages: 717 Localisation: Saint-Etienne
|
Posté le : Dim Sep 05, 2004 4:59 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
Essaye qqchose comme ça peut-être (pas testé) :
| Code: |
| ("SELECT * FROM table ORDER BY rand(" . time() . " * " . time() . ") LIMIT 3"); |
|
|
| |
|
 |
ysimon WRInaute occasionnel

Inscrit le: 24 Fév 2004 Messages: 140
|
Posté le : Dim Sep 05, 2004 9:43 Sujet du message: 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 classique
mais malheureusement les résultats semblent toujours affichés dans le même ordre, même si je relance la requête.
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  |
|
| |
|
 |
malango WRInaute discret

Inscrit le: 14 Oct 2003 Messages: 89 Localisation: Mayotte
|
Posté le : Mer Fév 16, 2005 20:16 Sujet du message: 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 classique
mais malheureusement les résultats semblent toujours affichés dans le même ordre, même si je relance la requête.
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... |
|
| |
|
 |
xpertiz Nouveau WRInaute
Inscrit le: 04 Jan 2005 Messages: 1 Localisation: Valence
|
Posté le : Mar Aoû 09, 2005 14:09 Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand() |
|
|
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 |
|
| |
|
 |
| |
|
|