Doublons sql

Résolu
Signaler
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Bonjour

je cherche une requete pour rechercher dans ma base de données tous les doublons
J'ai une table de patient et je dois vider tous les doublons donc je cherche la requete qui me permettrait de n'avoir
que les doublons
Q'elle est la procédure à faire????
Merci pour votre aide.
illana

15 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pour avoir la totalité des enregistrements correspondant à des doublons, je verrais un truc du genre :

SELECT * FROM TaTable WHERE NomPatient IN (
    SELECT NomPatient FROM (
        SELECT NomPatient, Count(NomPatient) FROM TaTable
        GROUP BY NomPatient
        HAVING Count(NomPatient)>1
    )
)

Si tu veux juste une liste des patients enregistrer en doublons tu peux te contenté de :
SELECT NomPatient, Count(NomPatient) FROM TaTable
GROUP BY NomPatient
HAVING Count(NomPatient)>1

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

merci beaucoup casy

illana
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Procédons par ordre.

Le bouton accepter sert à accepter la ou les réponses qui t'on donner la solution ou aider à résoudre ton problèmes. Les réponses acceptées sont différenciées des autres par un cadre vert. Cela permet, entre autres, à d'autres visiteurs qui auraient le même problème que toi, d'identifier immédiatement la solution.

Pour ta requette, tu ne dois préciser le WHERE qu'une seule fois. C'est "dans" le WHERE que tu dois combiner les conditions. Supprime le second Where :

SELECT *
FROM dbo_MALADE
WHERE MA_NOM1 IN (
    SELECT MA_NOM1 FROM (
        SELECT MA_NOM1, Count(MA_NOM1) FROM dbo_MALADE
        GROUP BY MA_NOM1
        HAVING Count(MA_NOM1)>1
    )
)
AND <strike>WHERE</strike> MA_DATENAI  IN (
     SELECT MA_DATENAI FROM (
          SELECT MA_DATENAI, Count(MA_DATENAI) FROM dbo_MALADE
          GROUP BY MA_DATENAI
           HAVING Count(MA_DATENAI)>1
  )
);

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Ta requette m'a donné un peu de dificultés, mais je pense avoir trouver la solution :

SELECT dbo_MALADE.*
FROM dbo_MALADE INNER JOIN
    (
        SELECT MA_NOM1, MA_DATENAI, Count(MA_NOM1) FROM dbo_MALADE
        GROUP BY MA_NOM1, MA_DATENAI
        HAVING Count(MA_NOM1)>1
    ) Tmp
    ON (
            (dbo_MALADE.MA_NOM1=Tmp.MA_NOM1)
            AND
            (dbo_MALADE.MA_DATENAI=Tmp.MA_DATENAI)
        )

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

 ca marche mais maintenant si je veux rajouter encore une condition doublons dans le noms et dans la date de naissance
Peut tu encore m'aider cosy?

illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

a quoi sert ce reponse accepté sur la droite!?

illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

VOICI MA SYNTAXE

SELECT *
FROM dbo_MALADE
WHERE MA_NOM1 IN (
    SELECT MA_NOM1 FROM (
        SELECT MA_NOM1, Count(MA_NOM1) FROM dbo_MALADE
        GROUP BY MA_NOM1
        HAVING Count(MA_NOM1)>1
    )
)
AND
WHERE MA_DATENAI  IN (
     SELECT MA_DATENAI FROM (
          SELECT MA_DATENAI, Count(MA_DATENAI) FROM dbo_MALADE
          GROUP BY MA_DATENAI
           HAVING Count(MA_DATENAI)>1
  )
);

Mais j'ai une erreur de syntaxe
illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

merci cosy la syntaxe marche mais le resultat n'est pas ce que je voulais
j'aimerais que on me garde dans ma table ceux qui ont le même nom et la même date de naissance pour être sur que c'est bien un doublon
et pour pouvoir le fusioner aprés.
Mais là j'ai eu que ceux qui ont la même date de naissance. bizzare
Merci cosy pour ton aide

illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

je met OR peut etre au lieu de AND
mais non je raconte des bétises je crois

illana
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Ok j'avais pas compris comme ça.

Non il faut juste alors, je pense, is j'ai bien compris, rajouter la date de naissance dans la requette de tri des doublons :

SELECT *
FROM dbo_MALADE
WHERE MA_NOM1 IN (
    SELECT MA_NOM1 FROM (
        SELECT MA_NOM1, MA_DATENAI, Count(MA_NOM1) FROM dbo_MALADE
        GROUP BY MA_NOM1, MA_DATENAI
        HAVING Count(MA_NOM1)>1
    )
)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

non je voudrais avoir tous les patients qui ont le même nom et la même date de naissance

illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

ex :

illana bidon    ----  11/04/1982
illana test       ------ 11/04/1982

même nom et même date de naissance afin de voir les vrai doublons de ma table

illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

MERCI beaucoup casy je vais essayer demain
merci merci merci mille fois

illana
Messages postés
14
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
27 janvier 2009

ca marche trop bien merci beaucoup


ca veut dire quoi tmp?

illana
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Tmp est un nom choisi au pif, j'aurais pu mettre toto.
C'est un alias que je donne au résultat de la requette comme s'il s'agissait en fait d'une table nommé Tmp

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php