illanal
Messages postés14Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention27 janvier 2009
-
21 janv. 2009 à 17:20
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
)
);
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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)
)
illanal
Messages postés14Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention27 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
)
);
illanal
Messages postés14Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention27 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
)
)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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