Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

[MySQL] tirage aléatoire via ORDER BY rand()

Aller à la page 1, 2  Suivante
Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 13765
Localisation: Toulouse

URL permanente de ce messagePosté 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
Code:
ORDER BY RAND()
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...
 
WebRankInfo Visiter le site web du posteur
lou
WRInaute impliqué
WRInaute impliqué

Inscrit le: 09 Mai 2004
Messages: 477

URL permanente de ce messagePosté le : Sam Sep 04, 2004 22:46    Sujet du message: [MySQL] tirage aléatoire via ORDER BY rand()

bah nan ça devrai marcher...
 
lou Visiter le site web du posteur
Gaëtan R.
WRInaute impliqué
WRInaute impliqué

Inscrit le: 26 Avr 2004
Messages: 311
Localisation: Aux frontières du 44, 35 et 56

URL permanente de ce messagePosté 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.
 
Gaëtan R. Visiter le site web du posteur
squawk
WRInaute accro
WRInaute accro

Inscrit le: 22 Mar 2004
Messages: 5985

URL permanente de ce messagePosté 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 ?
 
squawk
troops
WRInaute passionné
WRInaute passionné

Inscrit le: 16 Mar 2003
Messages: 807
Localisation: FRANCE

URL permanente de ce messagePosté 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
 
squawk
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 13765
Localisation: Toulouse

URL permanente de ce messagePosté 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)
 
WebRankInfo Visiter le site web du posteur
mahefarivony
WRInaute accro
WRInaute accro

Inscrit le: 14 Oct 2002
Messages: 11300

URL permanente de ce messagePosté 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 ? Shocked
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.
 
mahefarivony Visiter le site web du posteur
troops
WRInaute passionné
WRInaute passionné

Inscrit le: 16 Mar 2003
Messages: 807
Localisation: FRANCE

URL permanente de ce messagePosté 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
 
mahefarivony Visiter le site web du posteur
WebRankInfo
Administrateur du site
Administrateur du site

Inscrit le: 19 Avr 2002
Messages: 13765
Localisation: Toulouse

URL permanente de ce messagePosté 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
 
WebRankInfo Visiter le site web du posteur
mahefarivony
WRInaute accro
WRInaute accro

Inscrit le: 14 Oct 2002
Messages: 11300

URL permanente de ce messagePosté 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 ?
 
mahefarivony Visiter le site web du posteur
Bool
WRInaute passionné
WRInaute passionné

Inscrit le: 26 Fév 2004
Messages: 899
Localisation: Lyon

URL permanente de ce messagePosté 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 Confused
 
Bool Visiter le site web du posteur
Bobez
WRInaute passionné
WRInaute passionné

Inscrit le: 20 Mai 2004
Messages: 717
Localisation: Saint-Etienne

URL permanente de ce messagePosté 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");
 
Bobez Visiter le site web du posteur
ysimon
WRInaute occasionnel
WRInaute occasionnel

Inscrit le: 24 Fév 2004
Messages: 140

URL permanente de ce messagePosté 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
Code:
ORDER BY RAND()
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 Wink
 
ysimon Visiter le site web du posteur
malango
WRInaute discret
WRInaute discret

Inscrit le: 14 Oct 2003
Messages: 89
Localisation: Mayotte

URL permanente de ce messagePosté 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
Code:
ORDER BY RAND()
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...
 
malango Visiter le site web du posteur
xpertiz
Nouveau WRInaute

Inscrit le: 04 Jan 2005
Messages: 1
Localisation: Valence

URL permanente de ce messagePosté 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
 
xpertiz
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 2 - Aller à la page 1, 2  Suivante
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

Définitions :

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort