|
| Started by le_noy, Jan., 20 2005 12:21 PM - 5 replies |
| |
| | | |
|
| |
| Posted on January, 20 2005 - 12:21 PM |
Bonjour à tous les développeurs WebDev, comment faire pour selectionner 3 enregistrements d'une table aléatoirement? J'ai vu une fonction SQL "ORDER BY RAND() LIMIT 3" mais impossible de la faire fonctionner correctement et de plus on m'a plutot conseillé de sélectionner tous mes enregistrements puis ensuite à l'aide des fonctions de WebDev de n'en sélectionner que 3, aléatoirement. Mon souçis est que je ne vois pas trop comment procéder... Merci d'avance si on peut me guider. Cordialement, Jim |
| |
| |
| | | |
|
| | |
| |
| Posted on January, 20 2005 - 12:47 PM |
Le 20/01/2005, Jim R a supposé :
Bonjour à tous les développeurs WebDev, comment faire pour selectionner 3 enregistrements d'une table aléatoirement? J'ai vu une fonction SQL "ORDER BY RAND() LIMIT 3" mais impossible de la faire fonctionner correctement et de plus on m'a plutot conseillé de sélectionner tous mes enregistrements puis ensuite à l'aide des fonctions de WebDev de n'en sélectionner que 3, aléatoirement. Mon souçis est que je ne vois pas trop comment procéder... Merci d'avance si on peut me guider. Cordialement, Jim
tout dépend de ta base.
si c'est du mysql, cela ressemblerait à ça SELECT PPL_ID FROM PEOPLE ORDER BY RAND() LIMIT 3
si c'est de l'Oracle (par ex 3O client du 75) select * from ( select idf_client from client where substr(code_postal,1,2)='75' order by MOD(DBMS_RANDOM.RANDOM,50)+50) where rownum<0;
si c'est du HF ???? essaie la vs mysql
-- Eric Webmaster des Wtablettes www.wtablettes.net |
| |
| |
| | | |
|
| | |
| |
| Posted on January, 20 2005 - 3:11 PM |
J'ai déja essayé ceci : Requete1 = "SELECT FAMILLE.NOMFAMILLE AS NOMFAMILLE,"+... " SOUSFAMILLE.NOMSOUSFAMILLE AS NOMSOUSFAMILLE,"+... " PRODUIT.NOMPRODUIT AS NOMPRODUIT,"+... " PRODUIT.DESCPRODUIT AS DESCPRODUIT,"+... " PRODUIT.PRIXVENTEPRODUIT AS PRIXVENTEPRODUIT,"+... " PRODUIT.PRIXPROMOPRODUIT AS PRIXPROMOPRODUIT,"+... " PRODUIT.PROMOPRODUIT AS PROMOPRODUIT"+... " FROM SOUSFAMILLE, FAMILLE_SOUSFAMILLE, FAMILLE, PRODUIT"+... " WHERE SOUSFAMILLE.IDSOUSFAMILLE = FAMILLE_SOUSFAMILLE.IDSOUSFAMILLE"+... " AND FAMILLE.IDFAMILLE = FAMILLE_SOUSFAMILLE.IDFAMILLE"+... " AND FAMILLE_SOUSFAMILLE.ID = PRODUIT.ID"+... " AND PRODUIT.PROMOPRODUIT = 'Vrai'"+... " ORDER BY RAND() LIMIT 3"
et ça ne veut pas ne faut-il pas mettre un paramêtre à RAND(param) ?? |
| |
| |
| | | |
|
| | |
| |
| Posted on January, 20 2005 - 3:41 PM |
Jim R a formulé la demande :
J'ai déja essayé ceci : Requete1 = "SELECT FAMILLE.NOMFAMILLE AS NOMFAMILLE,"+... " SOUSFAMILLE.NOMSOUSFAMILLE AS NOMSOUSFAMILLE,"+... " PRODUIT.NOMPRODUIT AS NOMPRODUIT,"+... " PRODUIT.DESCPRODUIT AS DESCPRODUIT,"+... " PRODUIT.PRIXVENTEPRODUIT AS PRIXVENTEPRODUIT,"+... " PRODUIT.PRIXPROMOPRODUIT AS PRIXPROMOPRODUIT,"+... " PRODUIT.PROMOPRODUIT AS PROMOPRODUIT"+... " FROM SOUSFAMILLE, FAMILLE_SOUSFAMILLE, FAMILLE, PRODUIT"+... " WHERE SOUSFAMILLE.IDSOUSFAMILLE = FAMILLE_SOUSFAMILLE.IDSOUSFAMILLE"+... " AND FAMILLE.IDFAMILLE = FAMILLE_SOUSFAMILLE.IDFAMILLE"+... " AND FAMILLE_SOUSFAMILLE.ID = PRODUIT.ID"+... " AND PRODUIT.PROMOPRODUIT = 'Vrai'"+... " ORDER BY RAND() LIMIT 3" et ça ne veut pas  ne faut-il pas mettre un paramêtre à RAND(param) ??
non pas de param. j'espère que t'as commencé par faire simple ? Requete1 = "SELECT FAMILLE.NOMFAMILLE FROM FAMILLE LIMIT 3"
pour valider l'utilisation du LIMIT avec HF
Requete1 = "SELECT FAMILLE.NOMFAMILLE FROM FAMILLE ORDER BY RAND() LIMIT 3"
puis pour valider l'utilisation du RAND avec HF
sinon peut être la fn Hasard de windev fonctionnerait ?
-- Eric Webmaster des Wtablettes www.wtablettes.net |
| |
| |
| | | |
|
| | |
| |
Registered member 42 messages |
|
| Posted on September, 30 2018 - 9:41 PM |
Hello à tous, je déterre le sujet parce que je rencontre le même problème en 2018. Que ce soit avec la fonction WL.Hasard() ou rand() elles retournent toujours le même résultat à l'exécution dans une requête SQL. Ce qui fait qu'il est difficile de prendre un enregistrement au hasard.
Même en construisant la requête de différentes manières comme ceci :
[...] ORDER BY rand() LIMIT 1
ou ceci :
[...] WL.Hasard() AS hasardd [...] ORDER BY hasardd LIMIT 1
J'ai toujours le même résultat en sortie..
Est-ce que quelqu'un a trouvé une solution (performante) ?
PS : Petite précision, ma base de données étend répliquée les identifiants ne sont pas consécutifs. Je ne peux donc pas tenter de sélectionner un enregistrement en utilisant un identifiant au hasard entre le plus petit et le plus grand des IDs disponibles. |
| |
| |
| | | |
|
| | |
| |
| Posted on March, 10 2026 - 6:38 PM |
2026.....et toujours pas possible de faire un simple RAND() dans une requête
Bref, en jouant sur les centièmes de seconde, j'ai pu obtenir un résultat à peu près aléatoire
ORDER BY WL.HASARD(WL.VAL(WL.DROITE(WL.HEURESYS(), 1 )+WL.DROITE(WL.HEURESYS(),2))/WL.VAL(WL.DROITE(WL.HEURESYS(),2))*(1+WL.VAL(WL.DROITE(WL.HEURESYS(), 1 )))*10000,(1+WL.VAL(WL.DROITE(WL.HEURESYS(), 1 )))*10000000) |
| |
| |
| | | |
|
| | | | |
| | |
|