Discussion:
Eliminar Duplicados en Consulta
(demasiado antiguo para responder)
Ceac
2009-01-27 13:34:05 UTC
Permalink
Hola amigos, tengo una duda en un tabla con datos basicos (Nombre, Telefono,
Dirección) la idea es depurar la tabla eliminando los registros duplicados,
afortunadamente Access tiene un asistente para duplicados el cual utilice y
me genero una consulta de duplicados por Nombre. la Pregunta es ¿Si se pueden
eliminar los registros duplicados conservando un registro (original)
automaticamente (VBA)?
Pues en la consulta se eliminan todos cuando se seleccionan y son mas de
10.0000 registros mezclados entre algunos que no estan duplicados y otro si,
en la consulta de duplicados aparecen unos 4153 y es muy tedioso tener que
borrrar con clic los que estan duplicados...


De Antemano Gracias...
--
Saludos !!!

César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Ju@nK [MVP 2006/9]
2009-01-27 15:01:49 UTC
Permalink
¿Como elijes cual de los duplicados quieres borrar? ¿tienes registros
relacionados en otras tablas?
Ten presente eso antes de hacer nada, también deberías hacer una copia de
seguridad previa.

Si modificas la consulta de duplicados puedes hacer algo así

DELETE Capitulos.*
FROM (SELECT Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo],
First(Capitulos.[IdCapitulo]) AS PrimerCapitulo, First(Capitulos.[IdObra])
AS PrimeraObra
FROM Capitulos
GROUP BY Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo]
HAVING (((Capitulos.[NºCapitulo]) In (SELECT [NºCapitulo] FROM [Capitulos]
As Tmp GROUP BY [NºCapitulo],[DescripciónCapitulo] HAVING Count(*)>1 And
[DescripciónCapitulo] = [Capitulos].[DescripciónCapitulo])))
ORDER BY Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo]) AS
CapDuplicados INNER JOIN Capitulos ON CapDuplicados.PrimerCapitulo =
Capitulos.IdCapitulo;

Esto borraría el primer registro de los que están duplicados en la tabla
Capitulos
--
--
**
Salu2/Regards
***@nK [MVP Access] 2006/09
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
Post by Ceac
Hola amigos, tengo una duda en un tabla con datos basicos (Nombre, Telefono,
Dirección) la idea es depurar la tabla eliminando los registros duplicados,
afortunadamente Access tiene un asistente para duplicados el cual utilice y
me genero una consulta de duplicados por Nombre. la Pregunta es ¿Si se pueden
eliminar los registros duplicados conservando un registro (original)
automaticamente (VBA)?
Pues en la consulta se eliminan todos cuando se seleccionan y son mas de
10.0000 registros mezclados entre algunos que no estan duplicados y otro si,
en la consulta de duplicados aparecen unos 4153 y es muy tedioso tener que
borrrar con clic los que estan duplicados...
De Antemano Gracias...
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Ceac
2009-01-27 16:14:13 UTC
Permalink
Hola ***@nk,

Los Elimino manualmente dando clik sobre los que son duplicados...El codigo
que publicas coserva un registro.

Ha la tabla es solitaria ni tiene relaciones de ningun tipo pues los datos
fueron importados de una base de datos FireBird..
--
Saludos !!!

César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Post by ***@nK [MVP 2006/9]
¿Como elijes cual de los duplicados quieres borrar? ¿tienes registros
relacionados en otras tablas?
Ten presente eso antes de hacer nada, también deberías hacer una copia de
seguridad previa.
Si modificas la consulta de duplicados puedes hacer algo así
DELETE Capitulos.*
FROM (SELECT Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo],
First(Capitulos.[IdCapitulo]) AS PrimerCapitulo, First(Capitulos.[IdObra])
AS PrimeraObra
FROM Capitulos
GROUP BY Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo]
HAVING (((Capitulos.[NºCapitulo]) In (SELECT [NºCapitulo] FROM [Capitulos]
As Tmp GROUP BY [NºCapitulo],[DescripciónCapitulo] HAVING Count(*)>1 And
[DescripciónCapitulo] = [Capitulos].[DescripciónCapitulo])))
ORDER BY Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo]) AS
CapDuplicados INNER JOIN Capitulos ON CapDuplicados.PrimerCapitulo =
Capitulos.IdCapitulo;
Esto borraría el primer registro de los que están duplicados en la tabla
Capitulos
--
--
**
Salu2/Regards
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
Post by Ceac
Hola amigos, tengo una duda en un tabla con datos basicos (Nombre, Telefono,
Dirección) la idea es depurar la tabla eliminando los registros duplicados,
afortunadamente Access tiene un asistente para duplicados el cual utilice y
me genero una consulta de duplicados por Nombre. la Pregunta es ¿Si se pueden
eliminar los registros duplicados conservando un registro (original)
automaticamente (VBA)?
Pues en la consulta se eliminan todos cuando se seleccionan y son mas de
10.0000 registros mezclados entre algunos que no estan duplicados y otro si,
en la consulta de duplicados aparecen unos 4153 y es muy tedioso tener que
borrrar con clic los que estan duplicados...
De Antemano Gracias...
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Ceac
2009-01-27 17:12:13 UTC
Permalink
La Tabla se llama "Tabla3", y quiero efectuar la eliminación de duplicados
por el nombre de la persona para ello hay un campo "Nombre", tambien existe
un campo "Id" que es un autonumerico que no es significativo pues, no es el
campo clave. La consulta la plenteo de la siguiente manera siguiendo el
ejemplo de arriba y no me funciona:

DELETE Tabla3.*
FROM Tabla3 INNER JOIN (SELECT Tabla3.[Id], Tabla3.[Nombre],
First(Tabla3.[Id]) AS Id, First(Tabla3.[Id]) AS Nombre FROM Tabla3 GROUP BY
Tabla3.[Id], Tabla3.[Nombre] HAVING (((Tabla3.[Id]) In (SELECT [Id] FROM
[Tabla3] As Tmp GROUP BY [Id],[Nombre] HAVING Count(*)>1 And [Nombre] =
[Tabla3].[Nombre]))) ORDER BY Tabla3.[Id], Tabla3.[Nombre]) AS CapDuplicados
ON Tabla3.Nombre=CapDuplicados.Nombre;
--
Saludos !!!

César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Post by Ceac
Los Elimino manualmente dando clik sobre los que son duplicados...El codigo
que publicas coserva un registro.
Ha la tabla es solitaria ni tiene relaciones de ningun tipo pues los datos
fueron importados de una base de datos FireBird..
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Post by ***@nK [MVP 2006/9]
¿Como elijes cual de los duplicados quieres borrar? ¿tienes registros
relacionados en otras tablas?
Ten presente eso antes de hacer nada, también deberías hacer una copia de
seguridad previa.
Si modificas la consulta de duplicados puedes hacer algo así
DELETE Capitulos.*
FROM (SELECT Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo],
First(Capitulos.[IdCapitulo]) AS PrimerCapitulo, First(Capitulos.[IdObra])
AS PrimeraObra
FROM Capitulos
GROUP BY Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo]
HAVING (((Capitulos.[NºCapitulo]) In (SELECT [NºCapitulo] FROM [Capitulos]
As Tmp GROUP BY [NºCapitulo],[DescripciónCapitulo] HAVING Count(*)>1 And
[DescripciónCapitulo] = [Capitulos].[DescripciónCapitulo])))
ORDER BY Capitulos.[NºCapitulo], Capitulos.[DescripciónCapitulo]) AS
CapDuplicados INNER JOIN Capitulos ON CapDuplicados.PrimerCapitulo =
Capitulos.IdCapitulo;
Esto borraría el primer registro de los que están duplicados en la tabla
Capitulos
--
--
**
Salu2/Regards
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
Post by Ceac
Hola amigos, tengo una duda en un tabla con datos basicos (Nombre, Telefono,
Dirección) la idea es depurar la tabla eliminando los registros duplicados,
afortunadamente Access tiene un asistente para duplicados el cual utilice y
me genero una consulta de duplicados por Nombre. la Pregunta es ¿Si se pueden
eliminar los registros duplicados conservando un registro (original)
automaticamente (VBA)?
Pues en la consulta se eliminan todos cuando se seleccionan y son mas de
10.0000 registros mezclados entre algunos que no estan duplicados y otro si,
en la consulta de duplicados aparecen unos 4153 y es muy tedioso tener que
borrrar con clic los que estan duplicados...
De Antemano Gracias...
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Ceac
2009-01-27 17:39:02 UTC
Permalink
Solucionado el problema amigos:

Como lo que deseaba era depurar la tabla, realice un consulta del nombre y
en los parametros de "valores unicos marque" "Si" y tengo una tabla si
duplicados.

SELECT DISTINCT Tabla3.Cliente
FROM Tabla3
ORDER BY Tabla3.Cliente;



Gracias ***@nk, tu ejemplo me ilustro por donde podria ser la respuesta...
--
Saludos !!!

César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Post by Ceac
Hola amigos, tengo una duda en un tabla con datos basicos (Nombre, Telefono,
Dirección) la idea es depurar la tabla eliminando los registros duplicados,
afortunadamente Access tiene un asistente para duplicados el cual utilice y
me genero una consulta de duplicados por Nombre. la Pregunta es ¿Si se pueden
eliminar los registros duplicados conservando un registro (original)
automaticamente (VBA)?
Pues en la consulta se eliminan todos cuando se seleccionan y son mas de
10.0000 registros mezclados entre algunos que no estan duplicados y otro si,
en la consulta de duplicados aparecen unos 4153 y es muy tedioso tener que
borrrar con clic los que estan duplicados...
De Antemano Gracias...
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Ju@nK [MVP 2006/9]
2009-01-27 20:37:10 UTC
Permalink
De nada, en tu consulta enlazabas por el nombre, tenías que hacerlo por el
id, no por el nombre, para borrar el primer id ;-)

En caso de registros repetidos 3,4 o mas veces solamente hay que ejecutar
ese nº de veces la consulta, aunque tu solución es perfecta.
--
--
**
Salu2/Regards
***@nK [MVP Access] 2006/09
[DCE2003 ***] + VSTO [DCE2005 **]
http://juank.mvps.org http://www.juank.es
Correos personales o preguntas particulares en mi grupo
http://groups.google.es/group/juank?hl=es
www.juank.tk
¿Que es un MVP?, entérate en http://mvp.support.microsoft.com
**
Post by Ceac
Como lo que deseaba era depurar la tabla, realice un consulta del nombre y
en los parametros de "valores unicos marque" "Si" y tengo una tabla si
duplicados.
SELECT DISTINCT Tabla3.Cliente
FROM Tabla3
ORDER BY Tabla3.Cliente;
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Post by Ceac
Hola amigos, tengo una duda en un tabla con datos basicos (Nombre, Telefono,
Dirección) la idea es depurar la tabla eliminando los registros duplicados,
afortunadamente Access tiene un asistente para duplicados el cual utilice y
me genero una consulta de duplicados por Nombre. la Pregunta es ¿Si se pueden
eliminar los registros duplicados conservando un registro (original)
automaticamente (VBA)?
Pues en la consulta se eliminan todos cuando se seleccionan y son mas de
10.0000 registros mezclados entre algunos que no estan duplicados y otro si,
en la consulta de duplicados aparecen unos 4153 y es muy tedioso tener que
borrrar con clic los que estan duplicados...
De Antemano Gracias...
--
Saludos !!!
César Augusto Cardona
masterpublico[ARROBA]gmail[PUNTO]com
Cali-Colombia
Continúe leyendo en narkive:
Loading...