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

Consulta con 3 tablas

Estas en el tema de Consulta con 3 tablas en el foro de Mysql en Foros del Web. Buenas foro, tengo un problem con una consulta, mas bien es todo sql, tengo tres tablas, una actividad otra alojamiento y acti_aloj es una tabla ...
  #1 (permalink)  
Antiguo 04/07/2007, 14:43
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Consulta con 3 tablas

Buenas foro, tengo un problem con una consulta, mas bien es todo sql,
tengo tres tablas, una actividad otra alojamiento y acti_aloj es una tabla intermedia que me relaciona las actividades que se practican en un alojamiento, es una relacion de n a m. Como hago para obtener el nombre de los alojamientos en donde se practican todas las actividades. Alguna ayuda increible que me brinden. Supongamos que en la tabla actividades tengo 7 actividades, tendria que buscar en la tabla intermedia los alojamientos que tienen las 7 actividades pero como???, en dicha tabla tengo algo asi:
id_acti ------ id_aloj
1 ------ 1
2 ------ 1
3 ------ 1
4 ------ 1
5 ------ 1
6 ------ 1
7 ------ 1
1 ------ 2
4 ------ 2
8 ------ 2

Se entiende la idea, la cosa es que me tiene que devolver el nombre de los alojamientos en los cuales se practiquen todas las actividades que en total son 7, obio que en la tabla alojamiento tengo el identificador y en otro campo el nombre. Cualquier sugerencia me viene bien porque estoy bastante perdido.
Saludos
__________________
->Aprender es un proceso que incluye el error..

Última edición por cala932; 04/07/2007 a las 19:22
  #2 (permalink)  
Antiguo 14/07/2007, 01:34
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: Consulta con 3 tablas

Podrías detallar más tus tablas?

Última edición por axz; 14/07/2007 a las 01:58
  #3 (permalink)  
Antiguo 14/07/2007, 01:56
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: Consulta con 3 tablas

Lee un poco acerca de JOINS en cualquier manual de SQL, tu respuesta está ahí. Una vez que le pierdas el miedo (o asco), verás que no son tan difíciles.

Por lo pronto, si aún no has solucionado tu consulta. Postea la estructura de tus tablas y lo checamos.

Saludos cordiales!
  #4 (permalink)  
Antiguo 16/07/2007, 11:09
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Re: Consulta con 3 tablas

holas cala932, segun entendi tu duda medio que sera dificil hacer lo que piden en una sola consulta, lo que si creo que se podria hacer en dos consultas, una para obtener el total de actividades y a partir del total obtienes los alojamientos que tienen ese mismo numero de actividades, tomando en cuenta que no existen datos duplicados en tu tabla intermedia, aqui te dejo una idea de como seria mas o menos:
Código PHP:
//obtienes total de actividades
SELECT COUNT( *)
FROM actividades

//obtienes los alojamientos con todas las actividades poniendo el total en el having
SELECT *
FROM acti_aloj
HAVING COUNT
(id_aloj)>
espero te sirva, saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #5 (permalink)  
Antiguo 17/07/2007, 06:59
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Consulta con 3 tablas

Gracias por los comentarios axz y deadlykyo. Voy a probar lo que me dices deadlykyo y despues comento como me fue. Gracias nuevamente.
Salud2. xD
__________________
->Aprender es un proceso que incluye el error..
  #6 (permalink)  
Antiguo 17/07/2007, 15:58
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: Consulta con 3 tablas

Oh, bien, ya entendí ... ...
Con la respuesta que te dió deadlykyo y leyendo con más cuidado tu post original entendí mejor lo que quieres lograr. Entonces, usando la solución que sugirió deadlykyo y agregando un poco podemos dar con lo que creo que esperas ... siendo así, suponiendo que tus tablas actividad y alojamiento tengan ambas al menos 2 campos (id, descripcion):
Código PHP:
SELECT a.ida.descripcion
FROM acti_aloj aa
INNER JOIN alojamiento a
ON aa
.id_aloj a.id
HAVING COUNT
aa.id_aloj ) = ( SELECT COUNT( * ) FROM actividad 
y queda en una sola, además de que te devuelve el id y los nombres que esperas

Suerte

Última edición por axz; 17/07/2007 a las 16:01 Razón: Claridad
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 11:48.