Requete SQL doublons sur 2 champs [Résolu/Fermé]

- - Dernière réponse : sungvandan
Messages postés
1
Date d'inscription
mercredi 8 janvier 2014
Statut
Membre
Dernière intervention
8 janvier 2014
- 8 janv. 2014 à 09:30
Bonjour à tous,
de bon matin dans la programmation!
Je cherche une requête SQL permettant de me sortir des doublons sur deux champs...
Je m'explique, j'ai une base XXX avec 5 champs, où il y a malheureusement certaines lignes où 2 champs Y et Z sont identiques.
Exemple :
1ère ligne : Y=0123 et Z=7895
2ème ligne : Y=0123 et Z=7895,
Ce qui est une erreur. Sur 4000 energistrement, j'aimerai automatiser la chose. Au moins me sortir ces lignes en double, voir triple. Car il faudra que je supprime les plus anciens enregistrement, suivant la date (qui est aussi un des champs).
En espérant que vous m'ayez comprise,
Merci de me répondre!
Bonne journée à vous,
Bouh
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
387
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
7 décembre 2007
61
18
Merci
Erf, me doutais bien que tu me poserais cette question.
Alors en y regardant de plus près, pour enlever les lignes ou il n'y pas repetitions...

Ah oui, je me rappelle. Il faut utiliser Having, ce qui nous donne :
SELECT 
      CONCAT(Y,'_',Z) AS valeur, 
      COUNT(*) AS nombre_de_repetition
FROM nom_table
GROUP BY valeur
HAVING COUNT(*)>1

Bahan, grillé par sqlman ^_^

Dire « Merci » 18

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62854 internautes nous ont dit merci ce mois-ci

J'obtiens l'erreur :
Parse error: syntax error, unexpected T_STRING

: /
7 ans plus tard....

Merci pour cette exemple.

J'ai un problème à peu près similaire.

Voila mes couples:

1ère ligne : C1='mari1' et C2='femme1'
2ème ligne : C2='femme1' et C1='mari1'

Et j'aimerais juste garder un seule ligne car pour moi un couple est l'association de veux valeurs qu'elles soient C1 ou C2.

donc une ligne
1ère ligne : C1='mari1' et C2='femme1'

Merci.
sungvandan
Messages postés
1
Date d'inscription
mercredi 8 janvier 2014
Statut
Membre
Dernière intervention
8 janvier 2014
-
Pour ton problème, je pense qu'on peut ajouter simplement la condition c1 < c2

 SELECT c1,c2 FROM  ... WHERE c1<c2 

Ou tu peux
 SELECT c1,c2 FROM  ... WHERE c1<=c2 
Messages postés
387
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
7 décembre 2007
61
2
Merci
SELECT 
      CONCAT(Y,'_',Z) AS valeur, 
      COUNT(*) AS nombre_de_repetition
FROM nom_table
GROUP BY valeur

Ca ne fonctionnerait pas ça ? Ca devrait te sortir les valeurs du l'association Y_Z et le nombre de repetitions pour chacune de ces associations.

Désolé là je t'aide de tête ^_^.

Bahan
2
Merci
Cool, ça marche, sauf que j'ai aussi ceux qui ne sont pas en double! où nombre_de_repetition=1.
Peux-tu juste me dire où je peux "trancher", pour avoir juste les lignes où nombre_de_repetition>1 ?
Merci beaucoup en tout cas.
Je ne suis pas vraiment une experte en PHP/MySQL, mais j'adorerai...
à bientôt
Bouh
2
Merci
Cool, merci beaucoup, ça marche très bien.
Finalement, ça va me prendre quand un peu de temps à supprimer les doublons, mais je suis obligée de passer par le back-office, donc je ne peux pas faire de requête automatique.
Merci à toi, et bonne journée,
++
Bouh
Messages postés
387
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
7 décembre 2007
61
1
Merci
agueu ^_^, j'ai pas trop compris.

En gros, tu as des doublons et tu veux les sortir via une requête ? Ou alors justement tu ne veux pas les sortir ?

Bahan
1
Merci
En fait, je veux les sortir, dans un premier temps, car s'il n'y a pas beaucoup de doublons je ferai le reste/les suppression à la main. par contre, s'il y en a trop... je verrai dans un second temps.

Mais sinon, si tu as bien compris, ce sont des doublons sur 2 champs, et non pas qu'un seul.
Merci de ton retour...
Bouh