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

Ayuda con una consulta, mostrar interseccion

Estas en el tema de Ayuda con una consulta, mostrar interseccion en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo un problema en hacer una consulta. Tengo lo siguiente en una tabla cuyo resultado es: desc | Cod ---------- aaa | ...
  #1 (permalink)  
Antiguo 04/03/2009, 16:07
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 2 meses
Puntos: 11
Pregunta Ayuda con una consulta, mostrar interseccion

Hola a todos, tengo un problema en hacer una consulta.

Tengo lo siguiente en una tabla cuyo resultado es:

desc | Cod
----------
aaa | 01
bbb | 01
ccc | 01
ddd | 01
aaa | 02
bbb| 02
fff | 02
aaa | 03
bbb | 03
ggg | 03

En este caso, necesito la interseccion, es decir

aaa y bbb ya que ambos se repiten en los tres codigos. Como podria hacer mi consulta para obtener estos valores?

Saludos

Última edición por richardinj; 05/03/2009 a las 16:49
  #2 (permalink)  
Antiguo 05/03/2009, 02:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Ayuda con una consulta, mostrar interseccion

Código sql:
Ver original
  1. SELECT `desc`, COUNT(`desc`) tot FROM tabla GROUP BY `desc` HAVING tot = (SELECT COUNT(DISTINCT cod) FROM tabla)

Esto te encontrará las que aparecen en todos. Sólo hay algo que se escapa, si tú repites aaa en 03 dos veces lo contará dos veces, pero si con índices, triggers o programación lo tienes controlado, te bastará esto.
Si quieres restringir el número:
Código sql:
Ver original
  1. SELECT `desc`, COUNT(`desc`) tot FROM tabla WHERE cod IN ('02', '03') GROUP BY `desc` HAVING tot = 2
y así encontrarías los que están en 02 y 03 (esto último no lo he probado)

Ten cuidado y no uses como nombre de campo palabras prohibidas como desc que sirve para ordenar descendente. Cambia el nombre de ese campo. Puede hacerse con acentos graves, como te he puesto en mi ejemplo, pero para qué complicarlo.
  #3 (permalink)  
Antiguo 05/03/2009, 17:17
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 2 meses
Puntos: 11
Respuesta: Ayuda con una consulta, mostrar interseccion

Muchas gracias....

tengo otro en el caso de consultas grandes y con muchas tablas relacionadas...

primero hagan de esa consulta una Vista y usen esto...

select distinct campo1, campo2
FROM vista WHERE campo1 In (SELECT campo1 FROM
vista As Tmp GROUP BY campo1 HAVING Count(*)>1)
ORDER BY campo1;

>1 : indica si se repite mas de 1 ves.. os i quieren exacto

=3 : para los que se repiten 3 veces
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 13:18.