Partage
  • Partager sur Facebook
  • Partager sur Twitter

SQL - requête INSERT ... SELECT multiples lignes

Mettre plusieurs lignes qui contiennent une valeur issue d'un SELECT

Sujet résolu
    12 octobre 2018 à 23:11:31

    Bonjour !

    Je viens vers vous avec une question qui me taraude depuis quelques jours.

    J'ai une requête en INSERT avec laquelle je voudrais renseigner plusieurs lignes.
    Une des valeurs à enregistrer provient d'une requête SELECT.

    Pour l'instant, je procède ainsi :

    INSERT INTO Bases (nom, valeur, univers_id) 
    VALUES ('-11', -11, (SELECT id FROM Univers WHERE nom LIKE 'Test')),
    ('-8', -8, (SELECT id FROM Univers WHERE nom LIKE 'Test')),
    ('-6', -6, (SELECT id FROM Univers WHERE nom LIKE 'Test')),
    ('-4', -4, (SELECT id FROM Univers WHERE nom LIKE 'Test'));


    Puis-je réduire à un seul SELECT pour ces lignes ?

    • Partager sur Facebook
    • Partager sur Twitter
    Ca passait... c'était beau.
      13 octobre 2018 à 13:15:01

      Bonjour,

      Il faudrait créer une variable en amont, genre :

      SET @id = ( SELECT id FROM Univers WHERE nom LIKE 'test' LIMIT 1 );
      
      INSERT INTO Bases ( nom, valeur, univers_id )
      VALUES
      ( -8, -8, @id ),
      ( -6, -6, @id ),
      ( -4, -4, @id );

      Mais je me pose la question du pourquoi ne pas travailler directement avec l'id plutôt que d'aller le chercher ... A terme d'où proviendra la valeur "test" ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        13 octobre 2018 à 16:05:59

        Bonjour,

        Merci pour ton retour, ça fonctionne à merveille.

        C'est juste pour savoir que c'est possible :-)

        Imaginons qu'une autre personne ait à saisir les compétences liées à tests (Il y en a pour l'instant quelques centaines), je voudrais être sûr qu'il n'y ait pas d'erreur d'interprétation et que même si la table Univers vient à être modifiée (sait-on jamais), que les futures requêtes d'insertion fonctionnent bel et bien.

        Encore merci pour ta réponse !


        • Partager sur Facebook
        • Partager sur Twitter
        Ca passait... c'était beau.

        SQL - requête INSERT ... SELECT multiples lignes

        × 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