[MYSQL] comment tirer au hazard un certain nombre de lignes

comment tirer au hazard un certain nombre de lignes [MYSQL] - SQL/NoSQL - Programmation

Marsh Posté le 05-08-2002 à 15:53:12    

Bon je m'explisque, j'aimerais recuprer apres une requete sql n lignes prises au hazard dans une table.
Existe il un moyen de faire ça en SQL, ou doit on faire n requetes?

Reply

Marsh Posté le 05-08-2002 à 15:53:12   

Reply

Marsh Posté le 05-08-2002 à 16:13:30    

bin si tes lignes sont identifiées par un id quelconque (genre un nombre par exemple), tu généres X nombres aléatoire entre min(id) et max(id)
 
puis tu fais un select traditionnell avec tes id générés aléatoirement.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-08-2002 à 16:18:10    

ben ce sont de reference auto-incrémentales, le pbm c qu'elle ne sont pas continues, je risquerais de tomber ds un "trou"!

Reply

Marsh Posté le 05-08-2002 à 16:42:23    

ouais bin désolé faut ce qu'il faut. une BD c'est pas vraiment pour te retourner un truc à la random. C'est un peu bizarre comme requete tu ne trouves pas ?
 
Donc c'est au client de générér ce truc aléatoire.
 
Et bon si t'as des troucs, c'est pas bien grave, tu auras des records en moins.
 


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-08-2002 à 16:47:55    

vive la doc !
 
RAND()  
RAND(N) Retourne un nombre aléatoire, compris entre 0 et 1.0. Si un entier N est précisé, il est utilisé comme valeur de seed.  
mysql> select RAND();
        -> 0.5925
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND();
        -> 0.2079
mysql> select RAND();
        -> 0.7888
 
Il est impossible d'utiliser une colonne de valeur RAND() avec la clause ORDER BY , car la colonne sera évalué plusieurs fois. Avec MySQL 3.23, il est cependant possible d'écrire: SELECT * FROM Nom_table ORDER BY RAND(). Comme cela, il est possible de faire une sélection aléatoire d'une table : SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000.  


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 05-08-2002 à 16:49:53    

c'est dingue ca!


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-08-2002 à 16:50:36    

ça doit etre hyper performant :D

Reply

Marsh Posté le 05-08-2002 à 18:53:45    

Sh@rdar t genial! et pourtant je l'avais lue la doc... en fait c pour présenter en 1ere page un échantillon des produits, et il faut que ça tourne...
 
yaaiiiss, ça marche au poil :) je vous remercie.
 
bon un ptit tour sur le site pour voir à quoi cela à bien put me servir:
http://sunautosat.free.fr
 
greg>po grave, paske c une selection sur 3 lignes...
darklord>ben en fait, si MySQL est reconnu comme applicatif pour les ite webs, ils ont tt interet à proposer ce genre de fonction, puisqu'il y a des gens qui en ont besoin :)


Message édité par stb le 05-08-2002 à 18:55:22
Reply

Marsh Posté le 05-08-2002 à 19:05:12    

stb a écrit a écrit :

 
greg>po grave, paske c une selection sur 3 lignes...



ben oui et non, l'order se fait forcément sur toute la longueur de la table.
 
et sinon, il me semble que commercialement ça serait plus judicieux d'afficher en page d'accueil 3 voitures que tu ou qqun d'autre défini pour qu'elles apparaissent en 1e page. mais bon

Reply

Marsh Posté le 05-08-2002 à 19:07:57    

greg>oui c vré, je suis définitivement con... dire que j'ais vu ça cette année en licence (optimisation des requêtes).
Quand au choix des voitures, c'est ce que le commanditaire à décidé, alors...

Reply

Marsh Posté le 05-08-2002 à 19:07:57   

Reply

Marsh Posté le 05-08-2002 à 19:09:56    

stb a écrit a écrit :

greg>oui c vré, je suis définitivement con... dire que j'ais vu ça cette année en licence (optimisation des requêtes).
Quand au choix des voitures, c'est ce que le commanditaire à décidé, alors...



c pas grave :D demande à darklord :D
et pour le choix, bon ok. mais des fois faut proposer des choses aux clients ;)

Reply

Marsh Posté le 05-08-2002 à 21:30:57    

question optimisation faut voir, ça doit pas être si lent que ça.
 
au niveau du moteur, MySQL doit d'abord générer le random puis ensuite sélectionner les lignes correspondantes rien de bien colossal à mon avis..
 
à bencher tout ça !


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 05-08-2002 à 21:38:18    

--greg-- a écrit a écrit :

c pas grave :D demande à darklord :D
et pour le choix, bon ok. mais des fois faut proposer des choses aux clients ;)




 
dis donc toi. Je te signale que tu es à 5m de moi 8h/jour alors tu te calmes hein sinon
 
 [:tapai]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-08-2002 à 21:40:09    

DarkLord a écrit a écrit :

 
 
dis donc toi. Je te signale que tu es à 5m de moi 8h/jour alors tu te calmes hein sinon
 
 [:tapai]  



oups

Reply

Marsh Posté le 05-08-2002 à 21:40:28    

j'aime mieux ca.
 
Bon et PHP c'est bon là ?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 05-08-2002 à 21:41:07    

DarkLord a écrit a écrit :

j'aime mieux ca.
 
Bon et PHP c'est bon là ?



ouaip, mais pb de config de chora ou cvs
t'as pas vu mon mail?

Reply

Marsh Posté le 05-08-2002 à 21:41:25    

:ouch:  
 
euh je regarde  :ange:


---------------
Just because you feel good does not make you right
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed