Doublons sql

Résolu
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009 - 21 janv. 2009 à 17:20
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 23 janv. 2009 à 11:09
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
21 janv. 2009 à 20:35
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
3
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 15:01
merci beaucoup casy

illana
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 janv. 2009 à 16:02
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
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 janv. 2009 à 21:29
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 15:18
 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
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 15:19
a quoi sert ce reponse accepté sur la droite!?

illana
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 15:25
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
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 16:17
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
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 16:18
je met OR peut etre au lieu de AND
mais non je raconte des bétises je crois

illana
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 janv. 2009 à 16:28
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
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 17:01
non je voudrais avoir tous les patients qui ont le même nom et la même date de naissance

illana
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 17:07
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
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
22 janv. 2009 à 22:06
MERCI beaucoup casy je vais essayer demain
merci merci merci mille fois

illana
0
illanal Messages postés 14 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 27 janvier 2009
23 janv. 2009 à 10:10
ca marche trop bien merci beaucoup


ca veut dire quoi tmp?

illana
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 janv. 2009 à 11:09
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
0
Rejoignez-nous