INSERT avec sous requete

INSERT avec sous requete - SQL/NoSQL - Programmation

Marsh Posté le 12-12-2009 à 10:49:57    

je bloque sur une requête INSERT qui comporte une sous requête renvoyant plusieurs lignes
 
 
INSERT INTO T_MSG_MESSAGE SET ID_USER_AUT = '-99', MSG_TEXT = 'essai 123', ID_USER_DEST =( SELECT ID_USER FROM `T_SES_SESSION` WHERE SES_STATUS=1 )
 
j'ai essayé avec ....ID_USER_DEST = ANY ( SELECT ... et d'autres du meme genre, ca ne fonctionne pas, je n'est pas l'habitude des sous requêtes et je pense que la construction n'est pas bonne.  
 
 

Reply

Marsh Posté le 12-12-2009 à 10:49:57   

Reply

Marsh Posté le 14-12-2009 à 15:22:41    

la syntaxe n'est pas bonne en effet ... (SET ne sert que pour les updates)
 
tu peux aussi essayer un truc du genre (en oracle du moins) :
 
insert table_a_alimenter [(col_a_alim_1, col_a_alim_2, col_a_alim_3)]
select donnee1, donnee2, donnee3
from table_a_lire
where ....

Reply

Marsh Posté le 14-12-2009 à 22:07:45    

merci pour ta réponse mais mon problème est plutôt au niveau de la sous requête qui renvoi plusieurs lignes, je n'arrive pas à faire en une seule requête plusieurs insertion dans la base (est ce possible???) :
 
Une insertion pour chaque ID_USER ou le SES_STATUS=1
 
si tu as une idée ou si c'est faisable ou pas....

Reply

Marsh Posté le 15-12-2009 à 09:55:13    

hutarios a écrit :

merci pour ta réponse mais mon problème est plutôt au niveau de la sous requête qui renvoi plusieurs lignes, je n'arrive pas à faire en une seule requête plusieurs insertion dans la base (est ce possible???) :
 
Une insertion pour chaque ID_USER ou le SES_STATUS=1
 
si tu as une idée ou si c'est faisable ou pas....


C'est possible en utilisant la syntaxe que boboss t'as indiqué !
Tu as regardé son message au moins ? :o
 
Indice : dans le "select" de l'exemple de boboss, tu peux mettre des valeurs "en dur", pas forcément des champs de table ! Par exemple :
 
INSERT INTO foo(bar, baz)
SELECT 1, field
FROM foo2
 
insèrera, dans foo.bar : toujours la valeur 1 (pour chaque enregistrement inséré), et dans foo.baz les valeur de foo2.field.
On aura autant de record dans foo que de lignes retournées par le select.


Message édité par kao98 le 15-12-2009 à 09:58:11

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 15-12-2009 à 17:52:25    

J'avais mal compris la réponse de boboss, merci pour ces explications, effectivement syntaxe fonctionne parfaitement.
 
encore merci pour votre aide.  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed