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 ?
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" ?
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 !
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.