PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/05/2014 12:29:31

tatou
Membre

inserer dans une table à partir de plusieurs tables

Bonjour Postgresql Pro   

Je serais reconnaissante si tu peux m'aider
Je veux insérer dans une table des données à partie des autres tables

exple

j'ai une table1(col1,col2,col3,col4,col4,col5,col6)

et une table2(col1,col2)
          table3(col3,col4,col5)

j'ai essayé avec ce bout du code mais pas de sucées :
insert into table1(col1,col2,col3,col4,col4,col5,col6)

select col2
from table2
where table2.col1 = table1.col1

select col5 , col6
from table2
where table2.col3 = table1.3

comment faire est ce  je dois travailler avec les curseurs ?

merci pour ton aide appréciée

Hors ligne

#2 19/05/2014 12:34:54

rjuju
Administrateur

Re : inserer dans une table à partir de plusieurs tables

Bonjour,

il faut que la partie SELECT de la requête donne une valeur pour chacun des champs spécifié dans l'INSERT.

Votre INSERT spécifie tous les champs de la table table1 : (col1,col2,col3,col4,col4,col5,col6), et votre SELECT ne renseigne que col2. De plus, votre requête contient deux parties SELECT, ce qui ne peut pas fonctionner. Votre modèle semble également problématique, table2 et table3 n'ayant apparemment aucunes relations entre elles.

Hors ligne

#3 19/05/2014 13:00:58

tatou
Membre

Re : inserer dans une table à partir de plusieurs tables

merci rjuju pour tes explications

comment faire alors pour remplir une table à partier de plusieurs tables

et si j'ai une autre table4(col1,col3)

insert into table1(col1,col2,col3,col4,col4,col5,col6)

select col1,col2
from table4,table2
where table4.col1 = table2.col1

select col5 , col6
from table3,table4
where table2.col3 = table4.col3

Hors ligne

#4 19/05/2014 15:51:44

gleu
Administrateur

Re : inserer dans une table à partir de plusieurs tables

Il faut une seule requête SELECT avec la jointure qui va bien entre les différentes tables.


Guillaume.

Hors ligne

#5 19/05/2014 16:13:54

tatou
Membre

Re : inserer dans une table à partir de plusieurs tables

si non y'a t-il une autre solution ? j'arrive pas à le résoudre

Hors ligne

#6 19/05/2014 17:05:57

gleu
Administrateur

Re : inserer dans une table à partir de plusieurs tables

Eh bien, comme vous donnez pratiquement zéro information sur les liens entre les différentes tables, je ne vois pas trop ce qu'on peut vous répondre.

Une solution possible serait d'insérer les données à partir d'une première table, puis de faire des UPDATE pour intégrer les données des autres.


Guillaume.

Hors ligne

#7 19/05/2014 17:14:20

tatou
Membre

Re : inserer dans une table à partir de plusieurs tables

le seul lien entre table4, table2 et table 3 est qu'ils contiennent des données qui seront insérées dans la table1
donc je fais insert puis update  et cela via un trigger ou je récupére le résultat du mise à jour  dans un curseur ?

Hors ligne

Pied de page des forums