Rechercher : dans
Par :

Requete SQL doublons sur 2 champs

Dernière réponse le 30 nov 2005 à 11:42:46 Bouh, le 30 nov 2005 à 10:14:01 
 Signaler ce message aux modérateurs

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

1

B@|-|@N, le 30 nov 2005 à 10:21:52

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 Close the world.||.txen eht nepO

Répondre à B@|-|@N

2

Bouh, le 30 nov 2005 à 10:25:19

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

Répondre à Bouh

3

B@|-|@N, le 30 nov 2005 à 10:41:31
  • +2

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 Close the world.||.txen eht nepO

Répondre à B@|-|@N

4

Bouh, le 30 nov 2005 à 10:58:31

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

Répondre à Bouh

5

sqlman, le 30 nov 2005 à 11:06:57
  • +2

Having...

Répondre à sqlman

6

B@|-|@N, le 30 nov 2005 à 11:09:19
  • +8

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 ^_^ Close the world.||.txen eht nepO

Répondre à B@|-|@N

7

 Bouh, le 30 nov 2005 à 11:42:46

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

Répondre à Bouh
Collection CommentÇaMarche.net