Insert into select (from plusieurs tables)
darkness2207
-
Fab -
Fab -
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
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
4 réponses
-
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 -
c'est normal que cela s'enregistre dans les deux tables.verifier ces trables ont des liens et conservent les clés.
courage -
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). -
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