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

mejorar query para ver duplicados

Estas en el tema de mejorar query para ver duplicados en el foro de Mysql en Foros del Web. hola amigos quiero preguntarles si hay manera de mejorar este query. lo que trato de mostrar los usuarios con mas de 1 una cuenta este ...
  #1 (permalink)  
Antiguo 15/11/2012, 17:55
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Pregunta mejorar query para ver duplicados

hola amigos quiero preguntarles si hay manera de mejorar
este query.

lo que trato de mostrar los usuarios con mas de 1 una cuenta

este es mi query que me funciona pero siento que tarda mucho

Código:
SELECT DISTINCT
cuentas.client_id,
cuentas.cue_numero,
cuentas.cue_zona
FROM
cuentas
WHERE
cuentas.cue_asigBandera = 2012 AND
cuentas.cue_regionBandera = 7 AND
cuentas.cue_estatus = 'act' AND
    cuentas.client_id
In (SELECT client_id FROM cuentas As Tmp
		WHERE
		cue_asigBandera = 2012 AND
		cue_regionBandera = 7 AND
		cue_estatus = 'act' 
		 GROUP BY client_id HAVING Count(*) > 1)
GROUP BY
cuentas.cue_numero
ORDER BY
cuentas.cue_zona ASC, cuentas.client_id ASC



Uploaded with ImageShack.us


saludos espero me puedan asesorar
amigos
__________________
gerardo
  #2 (permalink)  
Antiguo 15/11/2012, 19:35
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: mejorar query para ver duplicados

Si lo que buscas son ids duplicados en primer lugar te diria que tienes un problema con tu tabla ya que al momento de crearla deberias crear el campo client_id como Primary Key o Unico asi te evitas que se repitan. Podrias probar con agrupar por id y contar para ver si te corre mas rapido

Código MySQL:
Ver original
  1. SELECT client_id, cue_numero, cue_zona, COUNT(client_id)
  2. FROM cuentas
  3. GROUP BY client_id;

Intenta de probar aver si te funciona no lo he probado pero al menos son menos lineas, esa consulta deberia devolverte los ids agrupados pero agregaria un campo de cuenta donde te dice cuantas veces esta ese id usando la funcion count.

Salu2
  #3 (permalink)  
Antiguo 15/11/2012, 19:39
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: mejorar query para ver duplicados

si entiendo tu punto de hecho es una tabla concentradora
y lo que pasa que el id cliente va tener mas de 1 cuenta, la tabla de clientes
esta aparte y me falto mostrar que hay un idkey de esa tabla

saludos
__________________
gerardo
  #4 (permalink)  
Antiguo 15/11/2012, 19:44
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: mejorar query para ver duplicados

si tu query es funcional lo unico que yo busco es que me muestre
los registros de aquellos clientes que tienen mas de 1
aquellos que solo tienen 1 no los necesito por el momento

saludos y gracias por tu apoyo

Cita:
Iniciado por djaevi Ver Mensaje
Si lo que buscas son ids duplicados en primer lugar te diria que tienes un problema con tu tabla ya que al momento de crearla deberias crear el campo client_id como Primary Key o Unico asi te evitas que se repitan. Podrias probar con agrupar por id y contar para ver si te corre mas rapido

Código MySQL:
Ver original
  1. SELECT client_id, cue_numero, cue_zona, COUNT(client_id)
  2. FROM cuentas
  3. GROUP BY client_id;

Intenta de probar aver si te funciona no lo he probado pero al menos son menos lineas, esa consulta deberia devolverte los ids agrupados pero agregaria un campo de cuenta donde te dice cuantas veces esta ese id usando la funcion count.

Salu2
__________________
gerardo
  #5 (permalink)  
Antiguo 16/11/2012, 00:13
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: mejorar query para ver duplicados

Cita:
Iniciado por chalchis Ver Mensaje
si tu query es funcional lo unico que yo busco es que me muestre
los registros de aquellos clientes que tienen mas de 1
aquellos que solo tienen 1 no los necesito por el momento

saludos y gracias por tu apoyo
yo tuve un problema similar, intenta con este y me dices, ok.

select id_cliente,
group_concat(cue_numero separator " ")as ctas
from cuentas
group by id_cliente having(count(id_cliente))>1
order by id_cliente
  #6 (permalink)  
Antiguo 16/11/2012, 00:27
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: mejorar query para ver duplicados

Cita:
Iniciado por gerardo_goh Ver Mensaje
yo tuve un problema similar, intenta con este y me dices, ok.

select id_cliente,
group_concat(cue_numero separator " ")as ctas
from cuentas
group by id_cliente having(count(id_cliente))>1
order by id_cliente

hola muchas gracias por el aporte
pero me muestra todos los registros
incluso los que solo tienen 1 cuenta
lo que se busca es lo que muestro
solo tratar de ver como hacerlo mas optimo




Uploaded with ImageShack.us
__________________
gerardo
  #7 (permalink)  
Antiguo 16/11/2012, 07:57
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: mejorar query para ver duplicados

A ver te dejo otra posible query:

Código MySQL:
Ver original
  1. SELECT * FROM cuentas
  2. WHERE client_id
  3. IN (
  4.     SELECT IF
  5.         (
  6.             count(client_id)>1,
  7.             client_id,
  8.             count(client_id)
  9.         ) AS contar
  10.             FROM test
  11.             GROUP BY client_id
  12.             HAVING contar > 1
  13. );

Última edición por djaevi; 16/11/2012 a las 14:51

Etiquetas: duplicados, mejorar, query, select
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 02:51.