Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Borrar Registros Duplicados

Estas en el tema de Borrar Registros Duplicados en el foro de Mysql en Foros del Web. Tengo una Tabla que tiene la siquiente estructura. Código PHP: CREATE TABLE  IF  NOT EXISTS  ` ganancias ` (   ` id_ganan `  int ( 11 )  NOT NULL auto_increment , ...
  #1 (permalink)  
Antiguo 02/12/2010, 08:14
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años
Puntos: 0
Borrar Registros Duplicados

Tengo una Tabla que tiene la siquiente estructura.

Código PHP:
CREATE TABLE IF NOT EXISTS `ganancias` (
  `
id_gananint(11NOT NULL auto_increment,
  `
usuario_gananvarchar(255NOT NULL,
  `
pais_gananvarchar(255NOT NULL,
  `
ip_gananvarchar(255NOT NULL,
  `
rango1_gananint(255NOT NULL,
  `
rango2_gananint(255NOT NULL,
  `
rango3_gananint(255NOT NULL,
  `
fechadate NOT NULL,
  `
procesarint(11NOT NULL,
  `
afiliadoint(11NOT NULL,
  
KEY `id_ganan` (`id_ganan`)
TYPE=MyISAM  AUTO_INCREMENT=
Y los insert son por ejemplo...

Código PHP:
INSERT INTO `ganancias` (`id_ganan`, `usuario_ganan`, `pais_ganan`, `ip_ganan`, `rango1_ganan`, `rango2_ganan`, `rango3_ganan`, `fecha`, `procesar`, `afiliado`) VALUES
(1142'Aces_G''Spain''00.00.00.01'010'2010-12-02'00),
(
1156'stuka2010''Germany'''00.00.00.01', 0, 1, 0, '2010-12-0300); 
Puede que tenga registros duplicados en al misma fecha y lo que hago es crear una tabla con la misma estructura y paso los registros de esta forma.

Código PHP:
INSERT INTO ganancias_nueva
SELECT 
*
FROM ganancias
GROUP BY ip_ganan
HAVING Count
(*) >=
Una vez echo esto vacio la principal y los vuelvo a copiar en la tabla original...

Código PHP:
INSERT INTO ganancias
SELECT 
*
FROM ganancias_nueva
GROUP BY ip_ganan
HAVING Count
(*) >=
Hasta hay todo correcto, esto es para ejecutarlo 1 vez al dia, por ejemplo a las doce.

El problema que tengo es que puede que tenga una ip en dos dias, y esa no quiero que la borre, lo que quiero que borre es cuando es la ip en el mismo dia, no se si me he explicado correctamente.

Si alquien conoce una forma mejor de hacerlo, o modificando algo....

Gracias
  #2 (permalink)  
Antiguo 02/12/2010, 09:46
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Borrar Registros Duplicados

Saludos

No se si te entendí bien, pero pensaría que solo agregando una condición en tu select que solo seleccione los de la fecha actual

Código MySQL:
Ver original
  1. INSERT INTO ganancias
  2. FROM ganancias_nueva
  3. WHERE fecha=CURDATE()
  4. GROUP BY ip_ganan
  5. HAVING Count(*) >=1
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 02/12/2010, 10:43
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar Registros Duplicados

Lo que quiero es cuando por ejemplo tengo un registro que tiene la ip 00.00.00.01 pero este esta duplicado con fecha de hoy, pero con diferente ID, este quiero que lo borre y deje solamente 1.

Y cuando tienen la misma IP pero con distinta fecha, por ejemplo Ayer y Hoy, quiero qeu los deje.

Vamos que solamente borre las mismas IP que tengan la misma fecha, pero que me deje una de ellas...


Haber si alguien sabe algo o como podria hacerlo, gracias
  #4 (permalink)  
Antiguo 02/12/2010, 10:49
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Borrar Registros Duplicados

Saludos

Entonces deberias quitarle el >= y dejarlo solo >

Código MySQL:
Ver original
  1. INSERT INTO ganancias
  2.       SELECT *
  3.       FROM ganancias_nueva
  4.       WHERE fecha=CURDATE()
  5.       GROUP BY ip_ganan
  6.       HAVING Count(*) >1
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 02/12/2010, 16:18
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar Registros Duplicados

Asi no marcha amigo mio...

Alguien que se lo ocurra otra cosa...

Gracias
  #6 (permalink)  
Antiguo 02/12/2010, 18:00
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Borrar Registros Duplicados

hola, intenta con
Código MySQL:
Ver original
  1. delete from ganancias G where G.id_ganan >
  2. (
  3.     Select min(id_ganan)
  4.     from ganancias G1
  5.     where G.ip_ganan = G1.ip_ganan
  6. )

si necesitas mas condiciones se las estableces.

espero te funciones

saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #7 (permalink)  
Antiguo 02/12/2010, 19:28
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar Registros Duplicados

Esta no va...

Puede que me explicase mal.

En la base se van guardando las ip con su fecha y cuando dos registros tengan la misma ip y la misma fecha quiero que se borre, evidentemente dejando uno de ellos.

Pero no quiero que se borre cuando tienen la misma ip, pero con distinta fecha.

Última edición por CanariasHosting; 02/12/2010 a las 19:39
  #8 (permalink)  
Antiguo 03/12/2010, 05:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar Registros Duplicados

Cita:
En la base se van guardando las ip con su fecha y cuando dos registros tengan la misma ip y la misma fecha quiero que se borre, evidentemente dejando uno de ellos.
¿No sería más simple evitar que se almacene?
Eso se puede hacer simplemente con un indice UNIQUE sobre ambos campos, y agregando "IGNORE" al insert (INSERT IGNORE INTO ...), para que no lo inserte pero tampoco mante un error.

de lo contrario, la unica forma de depurar una tabla con duplicidades de ese tipo sería usando tablas temporales, no sólo una consulta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 03/12/2010, 06:31
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Borrar Registros Duplicados

Cita:
Esta no va...

Puede que me explicase mal.

En la base se van guardando las ip con su fecha y cuando dos registros tengan la misma ip y la misma fecha quiero que se borre, evidentemente dejando uno de ellos.

Pero no quiero que se borre cuando tienen la misma ip, pero con distinta fecha.
exactamente que es lo que no va?

Cita:
si necesitas mas condiciones se las estableces.

espero te funciones
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #10 (permalink)  
Antiguo 03/12/2010, 07:41
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Cruz de Tenerife
Mensajes: 49
Antigüedad: 15 años
Puntos: 0
Respuesta: Borrar Registros Duplicados

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿No sería más simple evitar que se almacene?
Eso se puede hacer simplemente con un indice UNIQUE sobre ambos campos, y agregando "IGNORE" al insert (INSERT IGNORE INTO ...), para que no lo inserte pero tampoco mante un error.

de lo contrario, la unica forma de depurar una tabla con duplicidades de ese tipo sería usando tablas temporales, no sólo una consulta.
Entonces si pongo esto...

Código PHP:
ALTER TABLE ganacias ADD UNIQUE (`ip_ganan`, `fecha`); 
Evito que la misma ip con la misma fecha se guarde no...
  #11 (permalink)  
Antiguo 03/12/2010, 08:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Borrar Registros Duplicados

Esa sería la idea...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: borrar, duplicados, registros
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 21:43.