Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SQL] reqête aléatoire

Sujet résolu
    16 février 2012 à 11:36:26

    Bonjour,

    j'ai deux champs dans une table qui sont les mêmes je vous donne un exemple:
    j'ai un champs offre (c'est l'id) et deux autre champs qui possèdent plusieurs valeurs.
    |offre | ch1 | ch2|
    | M00 | 2 | 2 |
    | M00 | 3 | 3 |
    | M00 | 4 | 5 |
    | M01 | 2 | 2 |
    | M01 | 3 | 3 |
    | M01 | 4 | 5 |
    ...
    En fait ce que je voudrai c'est lorsque je veux insérer un nouvelle enregistrement je sélectionne une offre au hasard et je récupère les 2 champs pr l'insérer dans le nouveau.
    J'ai penser à faire une boucle mais le problème c'est que ma suite de numéro au des trous au milieu, mon champs1 va de 1 à 31 mais avec des trous irréguliers et mon champs2 de 2 à 26. Je n'y suis pr rien j'ai repris le travail d'une personne et je n'ai pas moyen de changer les champs (c'est tordu je sais mais j'ai pas le choix).
    J'avais pensé de mettre une condition dans la requête du genre:
    ... WHERE offre = "M00";
    

    Mais si un jour l'offre M00 est supprimé la requête ne marcherait plus, donc je voudrai sélection une offre au hasard dans la table c'est possible ?
    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2012 à 12:54:10

      bonjour,
      MySql propose la fonction "Rand()"

      SELECT * FROM table ORDER BY RAND() LIMIT 1;
      


      par exemple pour récuperer une ligne au hasard dans la table "table"
      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2012 à 13:55:07

        Oui je connais la fonction rand mais elle prends une valeur de type tinyint, int ou smallint alors que dans mon cas c'est des caractères.
        • Partager sur Facebook
        • Partager sur Twitter
          16 février 2012 à 14:04:16

          Hein ??? De quoi tu parles ? Quels caractères ?? T'as dit que tu voulais une ligne au hasard...
          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2012 à 14:44:46

            Ah oui je vois ce que voulais dire Doel, en fait ce que je voulais c'était de prendre une offre au hasard.

            Mais j'ai trouvée une solution j'utilise la requête suivante:
            SELECT TOP 1 ID_OFFRE FROM table1;
            

            Ensuite je l'a stock dans la variable id et je fais :
            INSERT INTO table1 ( champs1, champs2, ID_OFFRE )SELECT champs1, champs2, "new_offre" FROM table1 WHERE ID_OFFRE = + 'id' +;
            


            Si quelqu'un a une meilleur solution je suis preneur mais merci quand même d'avoir éssayé de m'aider
            • Partager sur Facebook
            • Partager sur Twitter

            [SQL] reqête 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