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

¿Cómo seleccionar registros en base a coincidencias en otra tabla unida?

Estas en el tema de ¿Cómo seleccionar registros en base a coincidencias en otra tabla unida? en el foro de Bases de Datos General en Foros del Web. Buenas! Tengo una consulta, que si bien tengo algunas soluciones (no las voy a dar por el momento) quisiera saber si a lo mejor alguien ...
  #1 (permalink)  
Antiguo 23/10/2009, 20:34
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 5 meses
Puntos: 2
¿Cómo seleccionar registros en base a coincidencias en otra tabla unida?

Buenas!

Tengo una consulta, que si bien tengo algunas soluciones (no las voy a dar por el momento) quisiera saber si a lo mejor alguien tiene una solución óptima.

Tablas:

Código:
empresas
--
? id
nombre

actividades
--
? id
nombre

empresas_actividades
--
? empresa_id
? actividad_id
La consulta:

Seleccionar todos los datos de aquellas empresas que tengan al menos las actividades A y B. Tener en cuenta que la tabla empresas tienen otros joins y condiciones en la consulta.

Espero haberme explicado bien! Saludos y gracias de antemano!
__________________
Sergio
  #2 (permalink)  
Antiguo 23/10/2009, 21:15
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: ¿Cómo seleccionar registros en base a coincidencias en otra tabla unida?

Cita:
que si bien tengo algunas soluciones (no las voy a dar por el momento)
es mejor saber que has hecho... no te vayamos a dar una solucón que ya tengas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/10/2009, 15:52
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 11 meses
Puntos: 0
Respuesta: ¿Cómo seleccionar registros en base a coincidencias en otra tabla unida?

Básicamente sería algo como:

select * from empresas_actividades ae inner join empresas e
on ae.empresa_id = e.id
inner join actividades a on ae.actividad_id = a.id
where actividades in ('A', 'B')
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
  #4 (permalink)  
Antiguo 29/10/2009, 02:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: ¿Cómo seleccionar registros en base a coincidencias en otra tabla unida?

Entiendo que con el 'al menos' quieres decir que pueden aparecer otros nombres de actividad, pero que deben estar siempre esos dos.

Código sql:
Ver original
  1. SELECT e.nombre FROM empresas_actividades ae
  2.  INNER JOIN empresas e
  3. ON ae.empresa_id = e.id
  4.  INNER JOIN actividades a ON ae.actividad_id = a.id
  5.  WHERE a.nombre IN ('A', 'B') GROUP BY e.empresa_id
  6.  HAVING COUNT(DISTINCT(a.nombre)) >=2

No lo he probado. Comprueba los nombres de los campos y alias que he puesto.
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 14:24.