JOINTURE A UTILISER POUR UN INSERT INTO

Résolu
guivrator Messages postés 11 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 17 avril 2009 - 17 avril 2009 à 11:46
guivrator Messages postés 11 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 17 avril 2009 - 17 avril 2009 à 15:35
Bonjour,

J'ai crée une base de données dans laquelle j'ai un premier tableau T1 contenant environ 25 champs donc une clé primaire ID. Pour remplir ce tableau je dois a chaque fois insérer des données provenant d'autres tableaux (T2, T3, T4, T5 ...) en insérant les données pour un ID correspondant

Si je veux sélectionner le contenu des champs baba et bobo de T2 correspondant a l'ID de T1 et T2 je fait

SELECT baba, bobo FROM T2 INNER JOIN T1 ON T1.ID = T2.ID

Logiquement pour insérer le tout dans T1 je fait

INSERT INTO T1 (baba, bobo) SELECT baba, bobo FROM T2 INNER JOIN T1 ON T1.ID = T2.ID

La requête va vouloir me mettre les résultats à la suite et donc erreur puisqu'il y aura 2 fois la même valeur pour l'ID qui est clé primaire

Comment faire pour ajouter baba et bobo dans la table T1 a l'ID correspondant a celui de la table T2?

2 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
17 avril 2009 à 15:16
bonjour,

est-ce que tes enregistrements existent deja dans T1 ?

dans ce cas, il ne faut pas faire un INSERT, mais un UPDATE :

UPDATE T1SET baba (SELECT baba from T2 where ID T1.ID),bobo (SELECT bobo FROM T2 WHERE ID T1.ID)

mais pour cela il faut etre sur que les sous requetes ne renvoient qu'un seul resultat, donc que chaque ID de T1 n'apparait qu'une seule fois dans T2...
3
guivrator Messages postés 11 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 17 avril 2009
17 avril 2009 à 15:35
Voila c'est exactement ce qu'il me fallait

Merci
0
Rejoignez-nous