Choix aleatoire mysql

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par hm19000, 12 Septembre 2007.

  1. hm19000
    hm19000 WRInaute occasionnel
    Inscrit:
    2 Octobre 2005
    Messages:
    368
    J'aime reçus:
    0
    Bonjour,

    Comment choisir aleatoirement 6 enrengisterment parmis les 20 derniers enrengistremement.

    SELECT id FROM AAAA ORDER BY RAND() LIMIT 6 c'est ce que j'ai trouvé.


    Merci pour votre aide.
     
  2. yazerty
    yazerty WRInaute passionné
    Inscrit:
    19 Juin 2005
    Messages:
    1 230
    J'aime reçus:
    0
    Je ne comprends pas : si tu as trouvé pourquoi poses-tu la question :- ?

    Edit : ah ok pardon je n'avais pas compris l'histoire des 20 derniers enregistrements désolé ;).
     
  3. biscuit
    biscuit WRInaute occasionnel
    Inscrit:
    5 Juin 2006
    Messages:
    425
    J'aime reçus:
    0
    Quelque chose dans le genre ... sait pas si ça fonctionne:

    SELECT id FROM table WHERE id IN (SELECT id FROM table ORDER BY id DESC LIMIT 20) ORDER BY RAND() LIMIT 6
     
  4. hm19000
    hm19000 WRInaute occasionnel
    Inscrit:
    2 Octobre 2005
    Messages:
    368
    J'aime reçus:
    0
    sa n'as pas marché, est que qlq 'un peut m'aider
     
  5. bertimus
    bertimus WRInaute passionné
    Inscrit:
    24 Août 2005
    Messages:
    1 633
    J'aime reçus:
    0
  6. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    sauf que son problème est de les sélectionner dans les 20 derniers.
     
  7. boutdepapier
    boutdepapier WRInaute discret
    Inscrit:
    4 Août 2006
    Messages:
    151
    J'aime reçus:
    0
    Perso je fais :
    $sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT 1";

    Et ça marche trés bien ;) Si tu veux faire un random sur les deux derniers il faut jouer sur le limit :

    $sql = "SELECT id, nom, chapo FROM fiche WHERE activite_actrice=1 ORDER BY rand() LIMIT (Le nombre total d'enreistrement total - 20),1";
     
  8. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    non, là ça trie par ordre aléatoire et ensuite ça en choisit les 20 derniers.
    Alors que ce qu'il veut, c'est en prendre 5 au hasard dans les 20 derniers. En fait, il faudrait quelque chose comme ça
    Code:
    SELECT * FROM matable where id in (select id FROM matable  order by id desc limit 10)
    order by rand() limit 0,5
    mais avec ma version de mysql, le limit du (select...) ne passe pas. Erreur :cry:
     
  9. hm19000
    hm19000 WRInaute occasionnel
    Inscrit:
    2 Octobre 2005
    Messages:
    368
    J'aime reçus:
    0
    Toujours rien, je ne sais pas pourquoi ca passe pas.

    Pourtant la solution de Leonick me parait juste. :cry:
     
  10. biscuit
    biscuit WRInaute occasionnel
    Inscrit:
    5 Juin 2006
    Messages:
    425
    J'aime reçus:
    0
    qui dit en passant est la même que la mienne...

    Sinon tu fais un tableau multidimensions avec les 20 résultats de ta requête, tu mélange le tout aléatoirement, et tu prends les 6 premiers...

    -edit:

    un truc comme ça (pas testé) :
    Code:
    	$i = 0;
    	while ($row = mysql_fetch_assoc($sql)) {
    		$row[$i]['champs1'] = $row['champs1'];		
    		$row[$i]['champs2'] = $row['champs2'];
    		$row[$i++]['champs3'] = $row['champs3'];
    	}
    	mysql_free_result($sql);
    	
    	shuffle($row);
    	
    	for ($i=0;$i<6;$i++) {
    		print $row[$i]['champs1'];		
    		print $row[$i]['champs2'];		
    		print $row[$i]['champs3'];
    	}
    
     
  11. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    :oops: ben oui, même pas fait gaffe.
    Ca marche, car c'est ce que je fais dans ces cas là, mais ça m'aurais bien arrangé aussi d'avoir une solution directe en sql :cry:
     
  12. hm19000
    hm19000 WRInaute occasionnel
    Inscrit:
    2 Octobre 2005
    Messages:
    368
    J'aime reçus:
    0
    Ca serai pas trop lourd pour le serveur ?

     
  13. biscuit
    biscuit WRInaute occasionnel
    Inscrit:
    5 Juin 2006
    Messages:
    425
    J'aime reçus:
    0
    C'est peut-être pas super optimisé (quoique, je vois pas comment faire d'autre, si qq a une astuce je suis aussi preneur)... mais ça reste une toute petite boucle, je doute que cela soit ne serait-ce que visible sur les performance de ton serveur... J'utilise un peu près cette méthode pour faire une sorte de cache des requêtes sql pour lesquels je dois sortir des valeurs plusieurs fois sur la même page.
     
  14. DrDroopy
    DrDroopy WRInaute discret
    Inscrit:
    28 Novembre 2005
    Messages:
    206
    J'aime reçus:
    0
    Lorsque l'on fait un SELECT "par defaut", sans indications supplémentaires, les données sont classées des plus anciennes aux plus récentes ?
     
  15. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    presque, car quand on supprime un enregistrement, le suivant va prendre la place libérée. Sauf si on compacte la base, mais bon, on ne le fait pas à chaque suppression.
     
  16. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 198
    J'aime reçus:
    1
    si tu trouve vraiment pas, tu prend les 20 derniers, tu les met dans un tableau php, et tu va chercher les resultats avec un rand() php :)
     
  17. DrDroopy
    DrDroopy WRInaute discret
    Inscrit:
    28 Novembre 2005
    Messages:
    206
    J'aime reçus:
    0
    Donc si on supprime un des 1ers enregistrements l'entrée suivante sera vu comme un ancien enregistrement. Et donc n'apparaitra pas dans les derniers ajouts. Comment faire, avec une table d'articles, pour connaitres les derniers ajout de manière fiable ? Rajouter un champ servant de compteur ?
     
  18. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    un id en autoincrement en index unique évidemment
    c'est ce que Biscuit avait proposé et que j'utilise sans problème, vu qu'il ne semble pas y avoir de solution plus optimisée
     
  19. DrDroopy
    DrDroopy WRInaute discret
    Inscrit:
    28 Novembre 2005
    Messages:
    206
    J'aime reçus:
    0
    L'autoincrement ne va pas réattribuer un id qui a été supprimé
    (Leonick sur tous les fronts :p)
     
  20. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    non car la valeur max est conservée. Quand tu copies la structure d'une table, l'autoincrement est sauvé sos la forme AUTO_INCREMENT=valmax et donc, même si tu supprimes toutes les données, tu recommenceras à valmax et pas à 0
     
  21. DrDroopy
    DrDroopy WRInaute discret
    Inscrit:
    28 Novembre 2005
    Messages:
    206
    J'aime reçus:
    0
    Ok merci, c'est bon à savoir
     
Chargement...
Similar Threads - Choix aleatoire mysql Forum Date
choix des 5 nombres aleatoires distincts... Développement d'un site Web ou d'une appli mobile 14 Novembre 2006
Choix d'url pour article de blog Demandes d'avis et de conseils sur vos sites 11 Août 2022
Retour expérience CMP et choix Administration d'un site Web 2 Août 2022
Choix du nom de domaine pour un bon référencement Débuter en référencement 3 Mai 2022
Choix de NDD pour l'international Référencement international (langues, pays) 17 Janvier 2022
WordPress Choix d'un thème WordPress Développement d'un site Web ou d'une appli mobile 1 Janvier 2022
Choix de balise de données structurées pour un service en ligne gratuit Débuter en référencement 31 Mars 2021
Choix des dossiers et URL (cocon sémantique) Référencement Google 8 Mars 2021
Choix du nom de domaine avec ou sans tirets ? Noms de domaine et référencement 21 Février 2021
Choix mots-clés pour cocon sémantique basé sur la demande ou l'offre Débuter en référencement 20 Février 2021
Site multilingue : quel choix à faire? Référencement international (langues, pays) 18 Janvier 2021
Choix d'un outil de suivi de rank et explorateur de mots clés Netlinking, backlinks, liens et redirections 24 Novembre 2020
Choix sujet site niche e-commerce 8 Novembre 2020
Le choix pour vos données Droit du web (juridique, fiscalité...) 4 Novembre 2020
Site en anglais / choix du marché Référencement international (langues, pays) 10 Août 2020
WordPress Quel choix entre Wordpress et Joomla Développement d'un site Web ou d'une appli mobile 30 Avril 2020
Article ou page dans WordPress : quel est le meilleur choix pour le SEO ? Rédaction web et référencement 22 Avril 2020
J'hésite sur le choix des couleurs du site Demandes d'avis et de conseils sur vos sites 24 Mars 2020
Quelle choix faire CMS ou Symfony Développement d'un site Web ou d'une appli mobile 12 Novembre 2019
Choix nom de domaine pour site secondaire activité Australie (.com.au) et Nouvelle Zélande (.co.nz) Référencement international (langues, pays) 23 Septembre 2019