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

Problema con registros repetidos

Estas en el tema de Problema con registros repetidos en el foro de Mysql en Foros del Web. Hola a todos, estoy haciendo una web de cine en la que necesito saber si estoy repitiendo algún registro. Buscando por estos foros encontré la ...
  #1 (permalink)  
Antiguo 14/09/2010, 19:59
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Problema con registros repetidos

Hola a todos, estoy haciendo una web de cine en la que necesito saber si estoy repitiendo algún registro. Buscando por estos foros encontré la solución y adapté el código a mis necesidades, todo funcionaba correctamente cuando sólo tenía 200 registros, pero ahora que tengo más de 10.000, la consulta no se puede ejecutar, el servidor se reinicia (creo que se dice así).

El código que tengo es el siguiente:

Código:
SELECT id, titulo, director, year FROM peliculas
WHERE(titulo, titulo_original, year)
IN(
SELECT titulo, titulo_original, year FROM peliculas
GROUP BY titulo, titulo_original, year
HAVING count(*)>1)
Lo que quiero es mostrar los registros repetidos en los que coincidan los campos titulo, titulo_original y year.

¿Sabe alguien porque no puedo realizar la consulta ahora si antes me funcionaba? ¿Estoy pidiendo demasiados datos?

Un saludo a todos.

Última edición por rubiomike; 14/09/2010 a las 20:04
  #2 (permalink)  
Antiguo 14/09/2010, 21:38
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: Problema con registros repetidos

Estás planteando una redundancia innecesaria.
Esta parte es suficiente para saber cuáles son las que se están repitiendo:
Código MySQL:
Ver original
  1. SELECT titulo, titulo_original, year
  2. FROM peliculas
  3. GROUP BY titulo, titulo_original, year
Luego de eso lo único que necesitarías es recuperar la lista de IDs correspondiente a las repetidas:
Código MySQL:
Ver original
  1. SELECT titulo, titulo_original, year, GROUP_CONCAT(ID) `Repeticiones`
  2. FROM peliculas
  3. GROUP BY titulo, titulo_original, year
Eso solamente en el caso de querer hacer algo con eso.
Ahora bien, si lo que quieres es evitar que este conjunto se repita, simplemente deberías crear un índice UNIQUE con él.
Por supuesto que un índice es un elemento que reduciría la performance de las inserciones, a fin de cuenta el sistema debe mantenerlo y actualizarlo con cada una, pero es una solución posible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/09/2010, 21:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Problema con registros repetidos

Hola gnzsoloyo, muchas gracias por responder. La verdad es que con la primera consulta todo va de maravilla, me muestra los registros repetidos y de forma muy rápida, es lo que necesito, pero tengo curiosidad, ¿para que sirve el segundo código?. El que dices que recuperas la lista de id's.

Es sólo curiosidad, como ya te dije, con la primera consulta ya me has solucionado el problema, pero nunca se sabe, a lo mejor lo otro me sirve sin yo saberlo jejeje.

Gracias de nuevo!. Un saludo
  #4 (permalink)  
Antiguo 15/09/2010, 02:57
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: Problema con registros repetidos

Es que, según lo que planteas, la tabla en cuestión admite que cierta información crítica (titulo, titulo_original, year) pueda repetirse. Eso sólo puede suceder si la PK de esa tabla no está definida por ninguno de esos campos, lo que me lleva a inferir que le has puesto un campo numérico.
En el caso que sea así, y necesites saber cuáles son los ID de esos registros repetidos, la segunda consulta genera un string de valores conforme el campo PK usado (estoy imaginando que se puede llamar ID) tal que luego puedas usarlo para manipular los registros en cuestión.
Si no vas a hacer nada con esa información, es decir, si sólo quieres saber de cuales películas tienes más de un ejemplar, entonces no la necesitas; pero si no, esa es la sentencia para detectarlos y no usar la que propusiste al principio, que tiene una baja performance de respuesta...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 15/09/2010, 12:34
 
Fecha de Ingreso: marzo-2010
Mensajes: 128
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Problema con registros repetidos

Muchas gracias de nuevo por responder. Has acertado con lo del ID jejeje.

De momento realizo solo la primera consulta, ya que con eso me basta para saber las que tengo repetidas y poder borrarlas, pero me guardo la segunda por si algún día la necesito.

Un abrazo.

Etiquetas: registros, repetidos
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 22:31.