MySQL - Consulta mySqL

   
Vista:

Consulta mySqL

Publicado por Sebastian (4 intervenciones) el 12/02/2012 18:47:06
Buenas!!

Soy nuevo en esta materia y estoy teniendo un problemas con una consulta que para ustedes les puede resultar bastante sencilla.

Tengo las siguienbtes tablas:


ANIMAL
idAnimal especie


ALIMENTO
idTipo nombre


ALIMENTO_ANIMAL
idAnimal(FK) idTipo(FK)



Necesito un listado de las especies que tengan ""todos"" los tipos de alimentos.

Desde ya gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Consulta mySqL

Publicado por xve (898 intervenciones) el 12/02/2012 19:47:30
Hola Sebastian, creo que seria algo así:

1
2
3
SELECT a.especie FROM
ALIMENTO_ANIMAL aa LEFT JOIN ANIMAL a ON aa.idAnimal=a.idAnimal
GROUP BY a.especie

Esto, creo que te devuelve todas las especies que tienen cualquier alimento.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta mySqL

Publicado por Sebastian (4 intervenciones) el 12/02/2012 20:00:42
Efectivamente me muestra las especies que tienen cualquier alimento.

Pero lo que yo necesito devolver es unicamente las especias que tengas "TODOS" los tipos de alimentos existentes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Consulta mySqL

Publicado por xve (898 intervenciones) el 12/02/2012 20:56:20
Mil perdones Sebastian, entendi TODOS no como una especie, sino que los querías ver todos... quedaría algo así:

1
2
3
4
5
SELECT a.especie FROM
ALIMENTO_ANIMAL aa LEFT JOIN ALIMENTO al ON aa.idTipo=al.idTipo
LEFT JOIN ANIMAL a ON aa.idAnimal=a.idAnimal
WHERE aa.nombre="TODOS"
GROUP BY a.especie

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta mySqL

Publicado por Sebastian (4 intervenciones) el 12/02/2012 21:07:49
Jaja, perdon, me estoy expresando mal. Resalte todos para que se entienda que son todos los tipos de alimentos, pero no es una especie.

Mira, te muestro lo que tengo hasta ahora.

1
2
3
4
5
6
7
SELECT idAnimal
FROM animal an
WHERE NOT EXISTS (SELECT idTipo
       FROM alimento al
       WHERE NOT EXISTS(SELECT *
                FROM alimento_animal aa
                WHERE al.idTipo = aa.idTipo  AND  an.idAnimal = aa.idAnimal))


Eso me devuelve los animales que tienen asociados todos los tipos de alimentos. Pero yo necesito devolver las especies que tengan asociados todos los tipos. Es decir que si hay un animal que no cumpla esa condicion directamente no devuelvo los otros animales pertenezcan a la misma especie.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar