RAND() SQL, il compte ce qui est sortie ?

RAND() SQL, il compte ce qui est sortie ? - SQL/NoSQL - Programmation

Marsh Posté le 01-08-2005 à 14:36:10    

Bonjour,
je souhaiterai savoir si la fonciton RAND() de MySQL gere un compteur des elements sortis auparavant.
 
En gros, j'ai une grosse BDD, et je ne voudrai pas que la question X resorte plusieur fois. Alors la fonction gere t-elle ca, ou faut-il que je stock les numeros de questions sorties ?
 
Merci !  :hello:


---------------
Pas oublier les glacons pour l'apero !!
Reply

Marsh Posté le 01-08-2005 à 14:36:10   

Reply

Marsh Posté le 01-08-2005 à 14:54:39    

ben si c'est rand() toutes les questions ont autant de chance de ressortir a chaque fois
Il est peu probable (statistiquement) que cela se produise si ta table est enorme mais c'est possible.
Si tu veux eviter un tel cas il te faut le gerer toi meme a mon avis

Reply

Marsh Posté le 01-08-2005 à 17:55:05    

Oui si tu veux être sûr que chaque question ne sort qu'une seule fois, il faut que tu vérifies à chaque fois. Ca fait un truc du genre:
 

Code :
  1. while(question_posee(num_question)){
  2.   num_question = rand();
  3. }


C'est pas optimisé mais ca marche...

Reply

Marsh Posté le 01-08-2005 à 18:03:27    

tu peux tenter un truc :
 
ajoute un champ "déjà posé" dans ta table
 

Code :
  1. select id from question where deja_pose <> 'Y' order by rand() limit 0,1


 
ensuite, :
 

Code :
  1. select * from question where id = $id


(avec $id = le numéro ressorti par la première question)
 
et enfin :
 

Code :
  1. update question set deja_pose = 'Y' where id = $id


 
Ainsi, tu ne peux pas poser deux fois la même question.


Message édité par Arjuna le 01-08-2005 à 18:03:53
Reply

Marsh Posté le 01-08-2005 à 18:12:51    

Ya de l'ID Arjuna !
 
Mais je peut po  :( ! Ya plusieurs utilisateurs qui se connectent en meme temps.
Pis j'aime pas trop modifier cette table la à chaque fois. Je crois que je vais pluto compter ce qui est sortie dans la session PHP, et comme à chaque question, les données sont reccup sur la base pour l'affichage, suffira de lui dire WHERE id<>XX.
 
 :hello:


Message édité par djfx le 01-08-2005 à 18:13:34

---------------
Pas oublier les glacons pour l'apero !!
Reply

Marsh Posté le 01-08-2005 à 18:14:52    

Ohhhh _p1c0_,
tu vient de me donner une ID ! Ca allegera encore la requete !
Merci !  :)  


---------------
Pas oublier les glacons pour l'apero !!
Reply

Marsh Posté le 01-08-2005 à 18:26:27    

djfx a écrit :

Ohhhh _p1c0_,
tu vient de me donner une ID ! Ca allegera encore la requete !
Merci !  :)


 
Ben ça allège la requête, mais si t'as vraiment pas de chance, tu retombes toujours sur les mêmes question et tu boucles longtemps... C'est jouable si la table conient beaucoup plus de questions que tu ne veux en poser...  :o

Reply

Marsh Posté le 01-08-2005 à 18:34:31    

En fait je vais plutot faire le traitement des redondances sur le serveur, avec PHP !
Pi je ferais des requetes SQL avec id=X (X=numero jamais sortie)
 
Ca sera + simple, je reccup tt les ID des questions, puis je tri et random, et rulezzzzzzzzzz !  :sol:  


---------------
Pas oublier les glacons pour l'apero !!
Reply

Sujets relatifs:

Leave a Replay

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