begin process at 2010 02 10 00:59:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > DOUBLONS DANS UNE TABLE

DOUBLONS DANS UNE TABLE


 Information sur la source



 Description

Bonjour,

Voici une requête qui vous permettera de connaitre la liste des enregsitrements en doublon, cela peut servir, par exemple, dans le cas où vous ne voulez pas définir de clé primaires ou bien si vous voulez effectuer des recherches de doublons sur clé partielle,.. que sais-je encore !

Source

  • Select Ch1,Ch2,Ch3 from maTable
  • <where ....>
  • Group by Ch1,Ch2,Ch3
  • Having count(*) > 1
Select Ch1,Ch2,Ch3 from maTable
<where ....> 
Group by Ch1,Ch2,Ch3
Having count(*) > 1

 Conclusion

En espérant que cela serve à quelqu'un !

++
Moustachu


 Sources du même auteur

[ORACLE] INFOS TABLESPACE
COUNT(DISTINCT) ET MS ACCESS

 Sources de la même categorie

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO... par FENETRES
[SQL SERVEUR] VÉRIFIER L'ESPACE OCCUPÉ DANS UNE BASE DE DONN... par Hyperion
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
REQUÊTE SQL POUR DÉTERMINER L'ESPACE OCCUPÉ DANS LES TABLESP... par sgoriaud
SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE par fabrice69

 Sources en rapport avec celle ci

CRÉATION D'UNE BASE DE DONNÉE AVEC FICHIER DE DONNÉES, JOURN... par fearmaker
REQUETE SUPPRESSION DE DOUBLON SOUS ORACLE par lamjed
REQUETE SUPPRESSION DE DOUBLON par tba
SQL SERVER 2005 - RECUPERER LA LISTE DES INDEXES EXISTANT SU... par fabrice69
SQL SERVER - TESTER L'EXISTANCE D'UN OBJET par skweeky

Commentaires et avis

Commentaire de fyav le 18/02/2005 12:05:24

simple efficace, bravo

Commentaire de Domilo le 22/02/2005 09:06:04

Oui,

Et pour aller plus loin, pour lister les éléments en doublon tu peux faire quelquechose comme cela :

Select
    Ch1,Ch2,Ch3,
    AutresChamps1,...

from maTable Lst
  JOIN (
               Select Ch1,Ch2,Ch3 from maTable
               <where ....>
               Group by Ch1,Ch2,Ch3
               Having count(*) > 1
           ) Dbl ON Lst.Ch1 = Dbl.Ch1
                          AND Lst.Ch2 = Dbl.Ch2
                          AND Lst.Ch3 = Dbl.Ch3
ORDER BY
     Ch1,Ch2,Ch3


D'autres préfèreront utiliser un WHER EXISTS qui marche aussi...

Commentaire de moustachu le 22/02/2005 09:10:32

Merci de vos commentaires
Domilio>Oui tout à fait... et je rpéfère une WHERE EXISTS ;o) mais c'est une question de goût.

Commentaire de dhardy le 17/01/2006 15:31:12

Bonjour,

Aurais-tu une procédure ou une requête simple qui pourrait effacer les doublons uniquement ?

Merci

Commentaire de ankou22 le 08/02/2007 17:45:37

Je me rend compte que le sujet est un peu ancien, vu que je cherchais a supprimer ces foutus doublons. J'ai trouvé cette solution pour supprimer les doublons.

Avant, il faut jouter une clef primaire unique auto-incrémenté (id_Ch )

DELETE FROM MaTable
WHERE (id_Ch IN

     (SELECT     MAX(id_Ch) AS id_a_supprimer
FROM        

(SELECT id_Ch, Ch1, Ch2, Ch3
                 FROM MaTable
                 WHERE ((Ch1 + Ch2 + Ch3) IN

               (SELECT Ch1 + Ch2 + Ch3 AS MaConcatenation
                         FROM MaTable
                         GROUP BY Ch1, Ch2, Ch3
                         HAVING      (COUNT(*) > 1)
)

       )
) DERIVEDTBL

         GROUP BY Ch1, Ch2, Ch3
)
      )

Je sais, c'est pas très élégant, mais ca marche.

Ankou22

Commentaire de ankou22 le 08/02/2007 17:49:10

oups je me rend compte juste après avoir posté que ca marche pas avec les triplons et les quadriplons. Puisque je ne supprimer que le Max(id_Ch)

Pas grave, executez la plusieurs fois ...

Commentaire de EMSIEN le 07/06/2007 13:30:58

Bonjour et merci pour ton aide.

Commentaire de maxroucool le 14/06/2008 21:52:07

Slt,

Merci pour ces deux requêtes. Seulement la requête de suppression a quand même mis 745 secondes pour supprimer une cinquantaine d'enregistrements dans une table de 5300 lignes. Pourtant j'avais passer le champ en question en index juste avant.

Y'a pas moyen de raccourcir un peu le temps d'exécution?

+++

Commentaire de moustachu le 15/06/2008 13:48:45

Bonjour,

La clause IN est parfois beaucoup plus lente que la clause EXISTS, notamment sur Access. Sur des véritables SGBD je suis pas sûr qu'il y ait une grande différence.

++
moustachu

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Suppression de doublon.... [ par Ry_Yo ] Bonjour &#224; tous,Je travail sous sqlserver et apr&#232;s recherche sur votre site, je n'ai pas trouv&#233; de m&#233;thode pour supprimer des doubl Recherche de doublon dans plusieurs champs d'une même table [ par PtitBilou ] Bonjour ! Fraichement larguée par mon employeur dans les méandres de la base de donnée, j'essaie de me dépatouiller pour mettre en place une base de d Pb de requete avec difference de sommes dans 2 table differentes [ par thloz ] Bonjour, J'ai 2 table : Saisie_089 ( champ: Exploit,Nom, et Nbr_h_089) et recu_089 (Nom, Nbr_h). Je souhaite creer une requete qui effectue la diffe CREATE TABLE ERREUR [ par didygwatinik ] Bonjour, Voici le create table de ma table notertexte : &lt;?php$liendb=mysql_connect("localhost","root","");mysql_select_db("jeunestalents");$sql="C Probleme de "structure" [ par Grodaf ] Bonjour à tous je suis en BTS Transport et je dois mener un projet lors d'un stage en entreprise je ne suis pas trop un spécialiste d'Access parce que avant update Insérer les premiers données dans une table historique [ par devap ] Salut;Je travail avec Sqlserver2005 et J'ai une table à laquelle je fais la mise à jour ; Procedure stockée trigger [ par AfKun ] Bonjour,J'ai un petit probleme... je dois faire une procedure suppAvion en plsql qui supprime un tuple dans la table avion  mais aussi les tuples dans procédures stockées pour remplir ma table historique [ par devap ] Bonjour;J'ai  cette PS je cherchais que chaque fois que l'utilisateur modifié la table T1 à partir d'une gridview  les premiers données (avant  update Clé primaire [ par fehrisoukeina ] Bonsoir,LA table empprint contient  clés primaires. create table empprint(codeexp numeric(4),codeadherent numeric(4),dateemp date,dateretour date,CONS Rechercher un champ d'une table "en tant que chaîne" dans le champ d'une autre table [ par Pecas ] Bonjour à tous/toutes, je suis nouveau dans le forum aussi bien que dans Access-SQL. Voici ma question :J'ai une table [Vieux prenoms] avec le champ P


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales