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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  fusion de tuples

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fusion de tuples

n°598453
robb2
Posté le 29-12-2003 à 14:48:06  profilanswer
 

Hello,
 
Je voudrais fusionner des doublons.
Cad:
Faire la somme des valeurs de chacun des doublons.
Supprimer les doublons pour n'avoir qu'un tuple unique avec cette somme calculée.
 
je connais les champs sur lesquels il y a des doublons grace à la requete suivante:
 
"SELECT codart FROM table group by codart having count(*)>1"
 
Merci

mood
Publicité
Posté le 29-12-2003 à 14:48:06  profilanswer
 

n°598462
bill.fr
Posté le 29-12-2003 à 15:02:08  profilanswer
 

Si c'est juste 1 fois (manip à la main) :
 
(sinon faut faire un script PL/SQL ou une procédure)
 
Tu récupères les codart dans une table :
 
create table tmp as select codart from table group by codart having count(*)>1 ;
 
ensuite tu crées les enregistrements dans une table 2
 
create table tmp2 as select codart, champ1, champ2, ..., sum(champ_a_somme) from table where codart in (select codart from tmp) group by codart, champ1, champ2, ... ;
 
ensuite tu effaces les enreg de ta table
 
delete table where codart in (select codart from tmp) ;
 
ensuite tu réintègres les données sommées
 
insert into table (codart, champ1, champ2, ..., champ_a_somme) select * from tmp2 ;
 
et pour finir un
 
commit ;
 
Voilà, ca devrait faire l'affaire. N'oublie pas de champs en route...
 
L'idéal si tu as peur de faire une bétise c'est avant tout de faire un
 
create table save as select * from table ;


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°598496
MagicBuzz
Posté le 29-12-2003 à 16:04:22  profilanswer
 

logiquement, y'a un sum() aussi dans la première requête pour faire la somme.

n°598500
bill.fr
Posté le 29-12-2003 à 16:09:52  profilanswer
 

MagicBuzz a écrit :

logiquement, y'a un sum() aussi dans la première requête pour faire la somme.


 
d'où le create table tmp2 as select codart, champ1, champ2, ..., sum(champ_a_somme) :D


Message édité par bill.fr le 30-12-2003 à 17:01:19

---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°598502
MagicBuzz
Posté le 29-12-2003 à 16:14:30  profilanswer
 

j'avais pas vu :)
 
autant tout faire en une passe ;)

n°598505
bill.fr
Posté le 29-12-2003 à 16:16:32  profilanswer
 

Je suis d'accord, mais c'est pour bien expliquer, comme ça étape par étape on voit tout ce qui va bien...
 
 
au fait comment on fait italique et gras déjà comme balises ?


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°598543
MagicBuzz
Posté le 29-12-2003 à 17:26:38  profilanswer
 

[ b ] et [ i ]
 
enfin... dans le forum ?
si c'est pour le HTML, c'est pareil, mais des < et > à la place des [ et ] :D En SQL on peut pas :D
 
sinon, au lieu d'utiliser "réponse rapide", utilise plutôt le bouton "répondre", comme ça t'as les titi boutons jolis qui font les tags tous seuls comme des grands quand tu cliques dessus ;)

n°598556
robb2
Posté le 29-12-2003 à 17:51:37  profilanswer
 

bill.fr a écrit :

Si c'est juste 1 fois (manip à la main) :
 
(sinon faut faire un script PL/SQL ou une procédure)
 
Tu récupères les codart dans une table :
 
create table tmp as select codart from table group by codart having count(*)>1 ;
 
ensuite tu crées les enregistrements dans une table 2
 
create table tmp2 as select codart, champ1, champ2, ..., sum(champ_a_somme) from table where codart in (select codart from tmp) group by codart, champ1, champ2, ... ;
 
ensuite tu effaces les enreg de ta table
 
delete table where codart in (select codart from tmp) ;
 
ensuite tu réintègres les données sommées
 
insert into table (codart, champ1, champ2, ..., champ_a_somme) select * from tmp2 ;
 
et pour finir un
 
commit ;
 
Voilà, ca devrait faire l'affaire. N'oublie pas de champs en route...
 
L'idéal si tu as peur de faire une bétise c'est avant tout de faire un
 
create table save as select * from table ;


 
Ok tres bien ! tout a fait daccord bill.fr.
Il me faut donc faire une procédure stockée qui fait tout ça ....
 c'est pas du gateau!
 
 merci


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

  fusion de tuples

 

Sujets relatifs
tri fusion en Cfusion word avec le symbole euros
[PHP] Classes et Héritages ou Fusion ?[XSL - XML] fusion colonne et nombre a virgule
[Postgres] Quel est le nombre de tuples stockes par page?une fusion silencieuse
Générer un fichier Excel grace au Cold Fusion ?Fusion de 2 listes chainees
Colf Fusion[cybase] comment limiter le nombre de tuples affiché en même temps ?
Plus de sujets relatifs à : fusion de tuples


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