IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Insertion de rand()


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut Insertion de rand()
    Bonsoir, j'ai une petite question :

    J'ai une table de 2 champs dans laquelle je dois insérer tous les identifiants d'une autre table dans le 1er champ et un nombre aléatoire entre 1 et 3 dans le 2nd champ, j'aimerais faire cela uniquement en MySQL (sans utiliser PHP ou autre) et en une seule requète.

    Alors pour générer le nombre aléatoire, j'ai essayé de créer une nouvelle table dans laquelle il y a 3 valeurs,(1,2,3) je fait :
    SELECT nombre
    FROM random
    ORDER BY RAND( )
    => Et effectivement cela me retourne aléatoirement un nombre entre 1 et 3, jusque là, ca va !

    Alors, j'ai voulu faire :
    INSERT INTO nouvelle_table (id,nombre)
    VALUES
    (
    (SELECT id FROM table ),
    (SELECT nombre FROM random ORDER BY RAND( ))
    )
    =>cela retourne l'erreur :#1242 - Subquery returns more than 1 row

    Si quelqu'un a une idée, je suis preneur, merci d'avance

  2. #2
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Bonjour,
    voir la syntaxe idoine ici : http://dev.mysql.com/doc/refman/5.0/...rt-select.html
    et écrire quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO nouvelle_table (id,nombre) SELECT id,rand() FROM table

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut
    Merci de votre aide
    Le problème avec cette requête est qu'elle ne génère qu'on nombre entre 0 et 1, j'aimerais avoir plus de souplesse sur le nombre généré, par exemple un nombre entre 0 et 2

  4. #4
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Voyez ici http://dev.mysql.com/doc/refman/5.0/...functions.html ce qui est proposé dans le paragraphe "rand"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut
    Merci, j'ai déjà vu cette page lors de mes recherches mais :
    RAND()
    => Retourne un nombre aléatoire à virgule flottante compris dans l'intervalle 0 - 1.0

    Ca ne répond pas a ma question malheureusement

  6. #6
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Ben si, cela répond à la question ! Pas la réponse espérée, mais ce que sait faire Mysql. Il faut peut-être passer par un script, hors mysql, qui générera ce nombre aléatoire d'après vos souhaits.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Par défaut
    Comme indiqué dans dans mon premier message, je ne souhaite pas passer par un script, ca va bien sur une table de 2 ou 3000 enregistrement, mais si faut faire ca sur plusieurs centaines de millier, bonjour l'horreur !!

    Bon, j'ai finalement trouvé une solution qui est pour ceux que ca peut intéresser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO nouvelle_table (id,nombre) SELECT id,(MOD(ROUND(RAND()*100),3)) FROM table
    Donc sur le principe, on récupère un nombre entre 0 et 100, et le modulo 3 sur ce nombre permet de recuperer une valeur entre 0 et 2, on peut bien sûr augmenté la valeur de multiplication si la plage de nombre aléatoire est plus importante !

    Merci quand même de votre aide !! :-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ORDER BY RAND() ne fonctionne pas dans INSERT
    Par cedrick21 dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/08/2010, 12h46
  2. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 10h28
  3. probleme d'insertion d'un Float
    Par neness dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2003, 13h32
  4. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 16h33
  5. Réponses: 4
    Dernier message: 28/09/2002, 01h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo