Bonjour à tous,
Après avoir fait le tour de tous les articles, tutoriels sur le sujet (notamment http://sqlpro.developpez.com/cours/doublons/) je n'est rien trouvé qui réponde à mon interrogation.
Je dois effectuer une requête de dédoublonnage (trouver les doublons et les supprimer) sur une table dont le code est ci dessous:
Ci dessous un jeu de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE TABLE `table` ( `Id1` int(10) NOT NULL default '0', `Id2` varchar(5) NOT NULL default '', `Id3` varchar(5) NOT NULL default '', `AAA` varchar(5) NOT NULL default '', `PPP` varchar(7) NOT NULL default '', `NNN` varchar(10) NOT NULL default '', `OOO` varchar(10) NOT NULL default '', `CCC` varchar(10) NOT NULL default '', `TTT` varchar(5) default NULL )
On dira qu'il y'a doublons dans le tableau lorsque pour les champs Id1 et PPP on a la même valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 INSERT INTO `table` VALUES (123, '459', '4554', '134', '13G11', 'XXX', 'YYY', '1340041', '00007'); INSERT INTO `table` VALUES (123, '459', '4554', '134', '13G11', 'XXX', 'SSS', '1340041', ''); INSERT INTO `table` VALUES (124, '459', '4554', '134', '13G11', 'HHH', 'LLL', '1348974', '00005'); INSERT INTO `table` VALUES (123, '459', '4554', '134', '13G15', 'RRR', 'NNN', '1340051', '00002'); INSERT INTO `table` VALUES (125, '459', '4554', '134', '13G15', 'HHH', 'GGG', '1343702', ''); INSERT INTO `table` VALUES (123, '459', '4554', '134', '13G11', 'WWW', 'DDD', '1340041', '');
Dans ma table on peut donc dire que les enrégistrements 1, 2 et 6 sont des doublons puisque les deux champs (Id1 et PPP) ont la même valeur. Le but de ma manoeuvre est donc de supprimer les enrégistrements doublons et conserver uniquement celui pour lequel le champ TTT n'est pas vide (ici cela revient à supprimer les enrégistrements 2 et 6)
Je veux donc passer de la table
Id1 Id2 Id3 AAA PPP NNN OOO CCC TTT
123 459 4554 134 13G11 XXX YYY 1340041 00007
123 459 4554 134 13G11 XXX SSS 1340041
124 459 4554 134 13G11 HHH LLL 1348974 00005
123 459 4554 134 13G15 RRR NNN 1340051 00002
125 459 4554 134 13G15 HHH GGG 1343702
123 459 4554 134 13G11 WWW DDD 1340041
à celle ci :
Id1 Id2 Id3 AAA PPP NNN OOO CCC TTT
123 459 4554 134 13G11 XXX YYY 1340041 00007
124 459 4554 134 13G11 HHH LLL 1348974 00005
123 459 4554 134 13G15 RRR NNN 1340051 00002
125 459 4554 134 13G15 HHH GGG 1343702
J'ai essayé de faire un SELECT DISTINCT sur les deux champs concernés Id1,CCC et j'obtiens bien les doublons mais sans les autres champs et je ne sais comment les supprimer. Si quelqu'un pouvait m'éclairer je serai ravis.
PS: J'utilise comme SGBDR Mysql et je travaille en local avec PhpMyadmin
Merci d'avance.
Partager