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

 


Dernière réponse
Sujet : [SQL] Suppression de doublons
PatBasi J'aime quand on me fait mal comme çà :hap:  
 
Merci beaucoup :jap:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
PatBasi J'aime quand on me fait mal comme çà :hap:  
 
Merci beaucoup :jap:
Mara's dad Attention, çà va faire mal !
 

Code :
  1. DELETE
  2. indice
  3. FROM
  4. appels
  5. WHERE
  6. indice Not In
  7.  ( SELECT first( A.indice )
  8.   FROM appels As A
  9.   GROUP BY c1,c2,c3
  10.   HAVING Count(*)>1  And A.c2 = appels.c2 And A.c3 = appels.c3
  11.  )
  12. AND c1 In
  13.  ( SELECT B.c1
  14.   FROM appels As B
  15.   GROUP BY c1,c2,c3
  16.   HAVING Count(*)>1  And B.c2 = appels.c2 And B.c3 = appels.c3
  17.  );


 
Le tout en une seule requête !
 
Le but est de garder celui de plus faible indice parmis les records qui ont des doublons.

PatBasi Select et group by, ya pa de problème
 
Or si je ne me trompe pas là tu ne m'exposes que la sélection des doublons (et de tous les enregistrements amors qu'il ke j'en garde 1)
 
En fait la sélection c ok (je savais faire, et même la suppression mais de manière assez lourde)
 
J'essayais juste de faire plus simple pour supprimer tous les enregistrements surnuméraires. Mais comme je te disais ne te prends pas trop la tête, il n'y a rien de vital (ce ki ne veut pas dire que je cherche à te décourager de m'aider; ton aide et le temps que tu me consacres sont fortement appréciés  :jap: -sans parler du zeste de patience vu comment je suis embêtant ;) -).
irulan Autant pour moi, je n'avais pas capté que tu étais sous Access.
 
Enfin ça ne fait rien, le Select est valable sous Access je pense (c'est du SQL standard).
 
Sinon, le select avec le group by te renvoie en fait toutes les valeurs qui ont plus d'une occurrence (donc à partir de 2 et + )
PatBasi Merci pour ton aide :)  
 
Et j'ai dit que j'étais sous Access (zè pas le choix =/ )
 
De plus quand je dis doublons cela peut monter à plus de deux (je peux très bien avoir 10 enregistrements identiques mais d'indice différent)
 
Mais ne t'emb^te pas trop la base n'est pas très grosse et si la méthode n'est très optimisé je survivrai à cela (c juste ke j'aime bien faire les choses correctement :sol: ).
irulan Pour effacer, il faudrait ne sélectionner que la première des lignes de chaque doublon (par exemple sous Oracle, utiliser ROWNUMBER < 2, mais bon comme tu n'as toujours pas précisé ton SGBD...)
irulan Bon tu peux essayer un truc du genre :
 
SELECT champ1, champ2, COUNT(indice)
from MaTable
GROUP BY champ1,champ2
HAVING COUNT(indice) > 1;
 
Ce bout de code est valable pour une seule table, à toi de l'adapter pour deux tables.
Ca te permet de selectionner les lignes en doublon.
PatBasi Hehe
 
Table appels: un champ indice; et les autres
Table client: un champ indice; et les autres
 
appels et clients sont liés par l'indice
 
Pour simplifier il faut considérer qu'il n'y a k'une grosse table.
 
Et je recherche les doublons sur tous les champs mis à part l'indice
 
 
Exemle:
************************************
Indice     Champ1     Champ2_....
1           bob          truc
2           blabla       cahuète
3           bob          truc
4           bob          MACHIN!!!!
************************************
Dans cet exemple comme les lignes 1 et 3 sont identiques sur tous les autres champs que l'indice, j'aimerais qu'il en supprime une des deux
irulan Pourrais-tu donner les structures des tables en indiquant les champs qui sont différents et les champs identiques dans le cas des doublons ?
 
J'ai du mal à comprendre : tes doublons sont dans qielle table ?
 
Tu utilises quelle type de base de données (Access, MySQL, Oracle, ...) ?
PatBasi Je bosse sous Access mais je travaille sur deux table liées par un indice: une table Access (d'appels) et une table (de références clients) qui est un lien vers une db5.
 
Dans les tables existe une floppée de champs; mais les doublons que je recherche sous 100% identiques à l'exception de l'indice qui est incrémenté à chaque ajout (en fait un logiciel extérieur peut créer dans ces tables des entrées identiques à plusieurs reprises et moi je passe derrière pour nettoyer)
 
J'espère que ma présentation est assez claire.
 
Et merci pour l'aide :)
Mara's dad C'est quoi la structure de ta table ?
 
Y'a un champ ID ?
 
Cà doublonne sur quoi ?
 
C'est quelle base SQL ?
PatBasi N'étant pas très expérimenté (ni doué :??: ) je bricole
 
Donc je peux y arriver mais je trouve que ma méthode est un peu lourde (je recherche les doublons; je mets leur indice en négatif; pour chaque série de doublons je recherche l'indice min et le remets en positif; finalement je supprime toutes les entrées dont l'indice est négatif).
 
N'y aurait-il pas plus simple et léger?

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