Partage
  • Partager sur Facebook
  • Partager sur Twitter

remplir une table de chiffres qui se suivent

    7 juin 2018 à 20:52:28

    Bonjour,

    je voudrais remplir les champs d'une table mysql avec ceci:  INSERT INTO table (id, id_m, id_c) VALUES (0,1,0,0), (0,2,0,0)  etc..(0,100,0,0)

    c'est possible sans tout saisir à la main ?

    • Partager sur Facebook
    • Partager sur Twitter

    Ce qui se conçoit bien s'énonce clairement.

      7 juin 2018 à 21:07:14

      Bonjour,

      Il te faut faire une procédure stockée.

      Crée d'abord ta table avec ses 4 colonnes numériques.

      Dans la procédure une boucle avec un incrément que tu mets comme variable dans une requête INSERT INTO.

      La doc est ton amie : https://dev.mysql.com/doc/refman/5.7/en/loop.html

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        8 novembre 2019 à 0:33:11

        Bonjour,

        J'avais laissé cela en plan, parce que finalement j'avais changé mon fusil d'épaule, mais je me retrouve de nouveau avec ce problème.

        J'ai regardé la doc du lien que tu m'avais donné, mais quand dans phpmyadmin j'inscris ceci:

        CREATE PROCEDURE doiterate(id_chor INT)
        BEGIN
          label1: LOOP
            SET id_chor = id_chor + 1;
            IF id_chor < 183 THEN
              ITERATE label1;
            END IF;
            LEAVE label1;
          END LOOP label1;
          SET @x = id_chor;
        END;
        

        et ça me répond:

        Erreur
        
        requête SQL:
        
        CREATE PROCEDURE doiterate( id_chor INT ) BEGIN label1 : LOOP SET id_chor = id_chor +1;
        
        MySQL a répondu:Documentation
        #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4

        pourquoi ?




        • Partager sur Facebook
        • Partager sur Twitter

        Ce qui se conçoit bien s'énonce clairement.

          8 novembre 2019 à 8:56:21

          C'est un problème de délimiteur ...

          Pour MySQL, le délimiteur par défaut est le point virgule. Dans ta requête tu démarres ta procédure et tu utilises le point virgule à l'intérieur ce qui embrouille MySQL qui croit que la requête s'arrête à la ligne 4 ...

          Dans PHPMyAdmin pour définir un délimiteur "temporaire" tu as une zone de saisie dans la fenêtre d'exécution de requête. Mets-y un délimiteur différent, par exemple && et saisi ta requête ainsi :

          CREATE PROCEDURE remplir_table( IN id_chor INT )
          BEGIN
          	label1: LOOP
          		SET id_chor = id_chor + 1;
          		IF id_chor < 183 THEN
          			INSERT INTO matable ( colonne1, colonne2, colonne3, colonne4 )
          			VALUES ( 0, id_chor, 0, 0 );
          			
          			ITERATE label1;
          		END IF;
          		LEAVE label1;
          	END LOOP label1;
          END&&

          Tu remarquera le && tout à la fin ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            8 novembre 2019 à 17:09:00

            super !

            Merci

            • Partager sur Facebook
            • Partager sur Twitter

            Ce qui se conçoit bien s'énonce clairement.

            remplir une table de chiffres qui se suivent

            × 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