Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Consulta con 3 tablas (http://www.forosdelweb.com/f86/consulta-con-3-tablas-502932/)

cala932 04/07/2007 14:43

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

axz 14/07/2007 01:34

Re: Consulta con 3 tablas
 
Podrías detallar más tus tablas?

axz 14/07/2007 01:56

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!

deadlykyo 16/07/2007 11:09

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

cala932 17/07/2007 06:59

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

axz 17/07/2007 15:58

Re: Consulta con 3 tablas
 
Oh, bien, ya entendí ... :pensando: ...
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 :arriba:


La zona horaria es GMT -6. Ahora son las 23:33.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.