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

Ayuda para filtrar un conjunto de datos

Estas en el tema de Ayuda para filtrar un conjunto de datos en el foro de Bases de Datos General en Foros del Web. Tengo esta data A m 12 A n 13 A q 23 B r 23 C s 34 C s 23 D t 78 D ...
  #1 (permalink)  
Antiguo 03/12/2010, 13:52
 
Fecha de Ingreso: octubre-2006
Mensajes: 59
Antigüedad: 13 años, 1 mes
Puntos: 0
Ayuda para filtrar un conjunto de datos

Tengo esta data

A m 12
A n 13
A q 23
B r 23
C s 34
C s 23
D t 78
D u 45
D v 12
D p 23
F n 09
F j 12
G l 34
G ll 35
G s 36

la consulta debe dar como resultado:
Sólo los registros cuya primera columna se repita en 3 ó mas filas

A m 12
A n 13
A q 23
D t 78
D u 45
D v 12
D p 23
G l 34
G ll 35
G s 36

muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 03/12/2010, 15:50
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 12 años, 10 meses
Puntos: 447
Respuesta: Ayuda para filtrar un conjunto de datos

Buenas tardes general9000, me hubiera gustado que incluyeras algo del código de lo que haz hecho para sacar la consulta, porque tal pareciera que ni siguiera lo intentaste, no mencionas ningún tipo de problemática, ni error, sólo planteas el problema y das algunos datos. Te recuerdo que el foro es para tratar de resolver dudas sobre problemas específicos, ojo para la próxima.

La consulta que planteas no es muy difícil a mi manera de ver, podrías hacerla utilizando una subconsulta, si te interesa ver cuáles de tus registros se repiten tres veces o más basta con hacer algo como esto:

Código MySQL:
Ver original
  1. SELECT Campo1
  2. FROM TuTabla
  3. GROUP BY Campo1
  4. HAVING COUNT(*) >= 3

Esta consulta te regresa lo siguiente

Campo1
-----------
A
D
G

Ahora puedes utilizar este resultado para filtrar tu tabla, ya sea mediante un INNER JOIN o con una sentencia IN o EXISTS (particularmente te recomiendo que lo hagas con un INNER JOIN, porque tiene mejor performance). Haz la prueba y si tienes problemas lo comentas en el foro para tratar de ayudarte.

Saludos
Leo.
  #3 (permalink)  
Antiguo 06/12/2010, 09:29
 
Fecha de Ingreso: octubre-2006
Mensajes: 59
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ayuda para filtrar un conjunto de datos

Muchas gracias

select *
from TuTabla
where Campo1 in (SELECT Campo1 FROM TuTabla GROUP BY Campo1 HAVING COUNT(*) >= 3)
order by Campo1;
  #4 (permalink)  
Antiguo 06/12/2010, 11:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 12 años, 10 meses
Puntos: 447
Respuesta: Ayuda para filtrar un conjunto de datos

Correcto general9000, eso debe funcionar.

Como te comenté en el post mi recomendación es utilizar INNER JOIN en lugar de IN o EXISTS, ya que estas dos últimas alternativas afectan considerablemente el rendimiento del servidor. Te dejo cómo sería la consulta con JOIN, para que la consideres.

Código SQL:
Ver original
  1. SELECT T1.* FROM TuTabla T1 INNER JOIN
  2. (SELECT Campo1 FROM TuTabla GROUP BY Campo1 HAVING COUNT(*) >= 3) T2
  3. ON T1.Campo1 = T2.Campo1
  4. ORDER BY T1.Campo1;
El resultado de la consulta es el mismo, pero el desempeño es mucho mejor.

Saludos
Leo.

Etiquetas: conjunto, filtrar
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 04:45.