COUNT Y MAX query

javi
30 de Agosto del 2004
Hola a todos. Nestor, hay una cosa que no entiendo en lo que me has mandado. No se donde relacionas el ANIMAL y la ESPECIE, es decir, tendría que haber una clausula WHERE ANIMAL.esp_id_especie = ESPECIE.id_especie. ¿Donde iria colocada?

A los que no sabeis de que va esto hago de nuevo la pregunta:
Tengo una entidad ESPECIE y otra entidad ANIMAL (relacion 1:n, animal hereda la clave primaria de ESPECIE). La query tiene que devolver el nombre de la especie que contiene el mayor número de animales. Estoy probando con el MAX y el select COUNT(*) pero no consigo hacerlo correctamente. Nestor me esta ayudando pero todavia no lo consigo hacer funcionar. ECHARME UNA MANO CHICOS QUE NO ME DA TIEMPO A ENTREGAR LA PRACTICA. Muchas gracias a todos

N?or
30 de Agosto del 2004
Fijate en el correo original. Ahí armé una tabla especies y otra animales según entendí yo tu caso y el query que resolvería lo que yo entiendo es tu pregunta:
Tablas que armé:
-->select * from especies;

ESP_ID NOMBRE
---------- ----------------------------------------------------------------------------------------------------
1 MAM TERRESTRE
2 MAM MARINO
3 MAM OTRO

3 filas seleccionadas.

-->select * from animales;

ESP_ID_ESPECIES ANIMAL
--------------- ----------------------------------------------------------------------------------------------------
1 perro
1 gato
1 gallina
2 orca
2 delfin
2 ballena
2 lobo_marino
3 caballo

8 filas seleccionadas.

-->
Query que las resuelve:
select *
from (
select max(y.valor) valor
from (
select count(c.esp_id_especies) valor
from animales c
group by c.esp_id_especies
) y
) s1,
(
select b.nombre nombre, count(a.esp_id_especies) valor
from animales a, especies b
where b.esp_id = a.esp_id_especies
group by b.nombre
) s2
where s1.valor = s2.valor;