Foros del Web » Programando para Internet » PHP »

Eliminar duplicados de una tabla

Estas en el tema de Eliminar duplicados de una tabla en el foro de PHP en Foros del Web. Hola a todos: Tengo una tabla con alrededor de 2000 registros los cuales contienen duplicados causado por un mal diseño de la BD en un ...
  #1 (permalink)  
Antiguo 31/07/2011, 14:43
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años
Puntos: 1
Eliminar duplicados de una tabla

Hola a todos:
Tengo una tabla con alrededor de 2000 registros los cuales contienen duplicados causado por un mal diseño de la BD en un inicio (OJO no fui yo quien la diseño ;)). Ahora la estoy revisando y pues bueno intentando solucionar este problema. La tabla original es la siguiente:
Código:
CREATE TABLE IF NOT EXISTS `author` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '',
  `product_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2223 ;
Si se dan cuenta tiene 2233 registros :) bueno para solventar el problema de los duplicados he creado una relacion n:m entre la tabla author y product quedandome de la siguiente forma:
Código:
CREATE TABLE IF NOT EXISTS `author_to_product` (
  `author_id` int(11) NOT NULL,
  `product_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Todo bien hasta ahi ahora el problema esta en crear un script que cuando lo ejecute me permita:
1. Determinar los duplicados existentes en la tabla author
2. Insertar el ID del primer registro encontrado asi como el product_id en la tabla author_to_product
3. Eliminar todos los duplicados dejando solamente el primer registro encontrado como referencia

Me hago entender? Alguna ayuda o idea?
  #2 (permalink)  
Antiguo 31/07/2011, 15:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Eliminar duplicados de una tabla

1 - el auto_incremet es solo una secuencia de referencia para el DBMS MySQL, no toma en cuenta registros eliminados, ese valor no indica el total de registros verdadero

2 - necesitas de código SQL para filtrar la data, en la web puedes conseguir miles de rutinas para detectar registros duplicados, como SQL group by + COUNT
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 31/07/2011, 15:15
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años
Puntos: 1
Respuesta: Eliminar duplicados de una tabla

Hola, tienes razon en lo del AUTO INCREMENT pero anda rondando ese numero de registros quizas un poco menos pero si se que tiene como 2000. La consulta se como se hace:
Código:
SELECT nombre_campo, count(*) FROM nombre_tabla GROUP BY    nombre_campo HAVING count(*) > 1;
Lo que no logro ver es la logica para luego de tener los duplicados quedarme con el ID del primero e insterlo en la tabla de la relacion n:m si te das de cuenta debo insertar el product_id y el id del autor o sea que serian dos columnas y esto es lo que no me hago la idea del como.

Etiquetas: duplicados, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:31.