Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5574 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Query pour mise a jour entre 2 tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Query pour mise a jour entre 2 tables

n°935983
red factio​n
Posté le 03-01-2005 à 18:35:26  profilanswer
 

j'ai deux tables identique au niveau schema
 

Code :
  1. table1
  2. x
  3. y
  4. z
  5. primary key(x,y)


 

Code :
  1. table2
  2. idem


 
pour aller remplir la table1 avec les données de la table2 je fait

Code :
  1. insert into table1(x,y,z) select x,y,z from table2;


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.  :sweat:  
 
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
mood
Publicité
Posté le 03-01-2005 à 18:35:26  profilanswer
 

n°936030
glod 2
Votre trajet, notre projet.
Posté le 03-01-2005 à 19:23:59  profilanswer
 

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 :o

n°936039
red factio​n
Posté le 03-01-2005 à 19:30:54  profilanswer
 

ouais et sur 4 colonne ? tu fait 4 select avec jointure?

n°936041
glod 2
Votre trajet, notre projet.
Posté le 03-01-2005 à 19:34:32  profilanswer
 

ben c pareil
insert into table1(w,x,y,z) select * from table2 where table2.pk not in(select table1.pk from table1)

n°936055
red factio​n
Posté le 03-01-2005 à 19:56:08  profilanswer
 

Glod 2 a écrit :

ben c pareil
insert into table1(w,x,y,z) select * from table2 where table2.pk not in(select table1.pk from table1)


 
en utilisant directement le nom de la constraint primary key ??? (et non la colonne sur lequel porte la primary key) :heink:

n°936060
sircam
I Like Trains
Posté le 03-01-2005 à 20:08:44  profilanswer
 

Mais non, deuxième option.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°936061
red factio​n
Posté le 03-01-2005 à 20:11:05  profilanswer
 

dans lexemple que tu a mis, si la primary key porte sur 3 olonnes comment tu fait ? (x ,y,z ) par exemple ....

n°936100
Beegee
Posté le 03-01-2005 à 21:06:02  profilanswer
 

insert into table1(w,x,y,z) select * from table2 where (x,y,z) not in(select x,y,z from table1)

n°936199
red factio​n
Posté le 03-01-2005 à 23:21:41  profilanswer
 

"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." :/

n°936200
Beegee
Posté le 03-01-2005 à 23:45:15  profilanswer
 

Essaye ça alors :
 

Code :
  1. insert into table1(w,x,y,z)
  2.     select * from table2 where not exists
  3.         (select 1 from table1 where table1.key1 = table2.key1 and ...)

mood
Publicité
Posté le 03-01-2005 à 23:45:15  profilanswer
 

n°936245
den57
Posté le 04-01-2005 à 08:19:56  profilanswer
 

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))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Query pour mise a jour entre 2 tables

 

Sujets relatifs
Idée pour mise en place d'un menu horizontal.....requete dans plusieurs tables
showMessageDialog(...,String s,...) et mise en formeCommande de mise en veille du moniteur ?
[VBA] Export query depuis VBA AccessJour de la semaine
[Excel][VBA]Empêcher le changmt de mise en pageboutique en ligne : Les tables SQL
Récupérer dernier jour moisGros pb de mise en page Css
Plus de sujets relatifs à : Query pour mise a jour entre 2 tables


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)