Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/07/2011, 14:43
reynierpm
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 1 mes
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?