Query pour mise a jour entre 2 tables - SQL/NoSQL - Programmation
Marsh Posté le 03-01-2005 à 19:23:59
insert into table1(x,y,z) select x,y,z from table2 where not in(select x,y,z from table 1);
un truc du genre
Marsh Posté le 03-01-2005 à 19:34:32
ben c pareil
insert into table1(w,x,y,z) select * from table2 where table2.pk not in(select table1.pk from table1)
Marsh Posté le 03-01-2005 à 19:56:08
Glod 2 a écrit : ben c pareil |
en utilisant directement le nom de la constraint primary key ??? (et non la colonne sur lequel porte la primary key)
Marsh Posté le 03-01-2005 à 20:08:44
Mais non, deuxième option.
Marsh Posté le 03-01-2005 à 20:11:05
dans lexemple que tu a mis, si la primary key porte sur 3 olonnes comment tu fait ? (x ,y,z ) par exemple ....
Marsh Posté le 03-01-2005 à 21:06:02
insert into table1(w,x,y,z) select * from table2 where (x,y,z) not in(select x,y,z from table1)
Marsh Posté le 03-01-2005 à 23:21:41
"You have written a subquery that can return more than one field without using the EXISTS reserved word in the main query's FROM clause. Revise the SELECT statement of the subquery to request only one field."
Marsh Posté le 03-01-2005 à 23:45:15
Essaye ça alors :
Code :
|
Marsh Posté le 04-01-2005 à 08:19:56
Tu es sur quel SGBD ? Si c oracle (il me semble a partir de 8i) tu peus utiliser une commande MERGE.
Ou sinon (mojns propre) tu peus virer la primary key de la table2 , insérer tous les enregistrements de la table 1 dans la table 2. Aprés tu effaces les doublons de la table 2 .(delete from table2 where ... in (select x,y,count(*) from table2 group by x,y having count(*) > 1))
Marsh Posté le 03-01-2005 à 18:35:26
j'ai deux tables identique au niveau schema
pour aller remplir la table1 avec les données de la table2 je fait
le probleme c que la table1 contient deja des records semblables a ceux table2 si on se préocuppe uniquement des primary keys et le sgbd me renvoie un "cannot insert , duplicates keys" et ninsere rien du tout.
jaimerai qd mm inserer certains record dans la table pour cela il faudrait que je puisse filtrer mon select et ne prend que les record manquant
pour une table avec une primary key composee je n'y arrive pas
Message édité par red faction le 03-01-2005 à 18:36:57