Partage
  • Partager sur Facebook
  • Partager sur Twitter

BDD selection de ligne aléatoire!

SELECT ????(*) FROM

    27 décembre 2005 à 12:22:14

    Bonjour comment selectioner une ligne aleatoiremen dans une table sachant que l'on ne peux pas utiliser les id (ligne supprimer aprait selection)
    Merci d'avance:)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 décembre 2005 à 12:25:33

      C'est simple, tu utilise la fonction rand() de php.
      1 : TU doit conaitre le nombre 'enregistrement dans la table.
      2 $Ligne = rand()% $NombreDenregisrement//Un nombre entre 0 et NombreDenregistrement-1
      3 Tu fait un select avec LIMIT :
      SELECT * FROM `matable` LIMIT ".$Ligne.",1"
      Ce qui veut dire : 1 enregistrement a partire de l'enregistrement n° $Ligne

      Pensse a Résolu ^^

      Edit : Devancer par bison ^^
      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2005 à 13:23:29

        pour peu d'enregistrement, ordre by rand() est bien...
        mais quand tu en as beaucoup, c'est des ressources perdus pour rien !
        Car order by rand trie toute la table et puis prend le premier élément.
        Le mieux, c'est de faire comme JC_Master à dit :
        1. On va chercher le nombre d'enregistrement (SELECT COUNT(*) FROM table).
        2. On prend un enregistrement au hasard avec mt_rand(1,le count)
        3. On boucle pour essayer d'avoir un enregistrement correct (car il est possible que l'id n'existe pas)
        4. Et on affiche

        • Partager sur Facebook
        • Partager sur Twitter
          27 décembre 2005 à 13:32:13

          Et on fais quoi dans le cas d'une table qui n'a pas d'id sous forme d'auto_increment ou sous forme de nombre ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            30 décembre 2005 à 0:57:21

            Non, regardez comme j'ai fait :
            Je prend un random, que j'utilise avec limit
            Pas besoin d'id, et pas d'order by rand. Sa demande peut de chose a mysql, deux SELECT(cout+1 enregistrement, selectioner grace a LIMIT rand,1)
            [Pour une fois que je dit quelque chose d'util ^^]
            • Partager sur Facebook
            • Partager sur Twitter

            BDD selection de ligne aléatoire!

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown