Les Allergies
Alimentaires
Posez votre question Signaler

Insert into select (from plusieurs tables)

darkness2207 - Dernière réponse le 12 mai 2011 à 22:54
Bonjour,
je voudrais faire des insertions dans une table TABLE1 à partir de données issues de 2 autres tables, TABLE2 et TABLE3.
j'aimerais faire fonctionner cela en 1 seule requête du type
insert into TABLE1 (id1,lib1,titre1)
select id2,lib2,titre3
from TABLE,TABLE3
where id2=id3
j'ai fait un essai et cela m'a bien inséré tous les couple TABLE2/TABLE3 dans TABLE1.
je me demande cependant si cela est fiable ?
est-ce qu'il n'y a aucun risque de bug ?
merci d'avance pour les futures réponses
Lire la suite 

Insert into select (from plusieurs tables) »

8 réponses
Réponse
+11
moins plus
merci pour ta réponse clara,

je me suis trompé dans la requete que j'ai mentionné (oups)
je recommence depuis le début:

peut-on être sûr qu'une requête de cette sorte (ci-dessous) renvoie bien chaque couple possible dans TABLE ?

insert into TABLE1 (lib2,lib3)
select lib2,lib3
from TABLE2,TABLE3

exemple:

on a les données suivantes:

table PERSONNE (idpers / nompers)
1 / marc
2 / arnaud
3 / antoine

table LIEU (idlieu / nomlieu)
1 / restaurant
2 / cinéma
3 / café

on execute alors la requete suivante:

insert into SORTIES (pers,lieu)
select nomlieu,nompers
from PERSONNE, LIEU

et on obtient le résultat

table SORTIES (pers/ lieu)
marc / restaurant
marc / cinéma
marc / café
arnaud/ restaurant
arnaud/ cinéma
arnaud/ café
antoine/ restaurant
antoine/ cinéma
antoine/ café


peut-on être sûr de la fiabilité d'une telle requête (qu'elle ne renvoie pas de doublon, qu'elle renvoie bien chaque couple 1 seule fois...)?

merci d'avance
nodnod32 - 20 avril 2009 à 14:00
est ce que la table sorties est déja créé dans la base de données ou vient d'étre crée dans la requete pour avoir ce resultat???
ekekekeke - 20 mai 2010 à 11:04
Merci beaucoup :)
jtedi - 12 mai 2011 à 22:54
taclep
Ajouter un commentaire
Réponse
+2
moins plus
c'est normal que cela s'enregistre dans les deux tables.verifier ces trables ont des liens et conservent les clés.
courage
Ajouter un commentaire
Réponse
+2
moins plus
Salut Darkness,

C'est une question fort subtile parce qu'à partir du moment on l'où implique deux tables dans une requête Select on s'attend à avoir une jointure (n tables = n-1 jointures) entre ces deux tables.

Malgré tout je ne vois rien qui puisse rendre cette requête non fiable à moins que tes tables, dès le départ contiennent des doublons (dans quel cas tu feras un select distinct).
Ajouter un commentaire
Réponse
-1
moins plus
Vous pouvez utilisé union all entre les deux select
EXP:

insert into table1
select * from table1
union all
select * from table2

à conditon que les 3 tables ont la même structure
Ajouter un commentaire
Ce document intitulé « insert into select (from plusieurs tables) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?