Suppresion des doublons d'une base de données

Suppresion des doublons d'une base de données - SQL/NoSQL - Programmation

Marsh Posté le 06-11-2008 à 08:50:45    

Voilà  mon soucis je dois faire un tri dans un table d'une base de donnée qui possède x champs.
 
Je me retrouve avec des doublons .
 
Exemple Table : Nom de la table Fruit  (base de donnée access)
 
Article     Quantité    Numero_de _produit
Pomme     3              123345
Poire        10            125369
Pomme     67            146983
 
Le but étant de supprimé uniquement l'article pomme avec le plus petit Numero_de_produit.
 
Il y a un moyen avec l'instruction update ou je dois passer par une table temporaire ???
 
ou avec select distinct


Message édité par bossamiral2 le 06-11-2008 à 09:10:16
Reply

Marsh Posté le 06-11-2008 à 08:50:45   

Reply

Marsh Posté le 06-11-2008 à 10:25:22    

avec update, je dirais que tu vas avoir du mal à supprimer des lignes.
avec delete, oui, tu pourras sans problème faire la requête, elle sera juste assez complexe.
 
et non, pas de distinct. tu auras besoin de not exists, max() et group by


Message édité par MagicBuzz le 06-11-2008 à 10:25:33
Reply

Marsh Posté le 06-11-2008 à 11:50:55    

Tu additionnerais les quantités des deux pommes, tu update le Pomme avec le plus petit NumProduit ( arbitrairement ) puis supprimerait le plus gros
la clause group by te permet en premier lieu d'isoler tes doublons


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 06-11-2008 à 12:13:53    

ah parcequ'il faut mettre à jour la quantité avant de delete ?

Reply

Marsh Posté le 06-11-2008 à 12:18:19    

Ce que tu veux avoir dans ta table au final :

Code :
  1. SELECT article, sum(quantite), min(produit)
  2. FROM fruit
  3. GROUP BY article


 

Code :
  1. -- Ca, si ça marche tu peux te faire moine boudhiste
  2. UPDATE fruit
  3. SET quantite = (
  4. SELECT sum(quantite)
  5. FROM fruit f
  6. WHERE f.article = article
  7. )
  8.  
  9. -- On n'est plus à ça près ^^
  10. DELETE fruit
  11. WHERE produit != (SELECT min(produit) FROM fruit f WHERE f.article = article)


 
Et ça devrait marcher


Message édité par MagicBuzz le 06-11-2008 à 12:18:37
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed