Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   sumas y agrupaciones en mysql (http://www.forosdelweb.com/f21/sumas-agrupaciones-mysql-326717/)

lsddigital 20/08/2005 05:33

sumas y agrupaciones en mysql
 
Hola a todos
Me estoy partiendo la mente tratando de crear esta consulta:

Tengo las siguientes tablas: paises (idpais, pais...), zonas (idzona, idpais, zona...) y animales (idanimal, idzona, animal...)
Las zonas se enlazan a los paises por idpais (al que pertenece cada zona).. y los animales a las zonas por el idzona (al que pertenece cada animal).

Quiero la lista de las zonas que determinado pais, ordenado por la cantidad de animales que estas tengan...
O sea.. de un pais x quiero saber cuantos animales tiene cada zona (en orden de mayor a menor cantidad de animales).

y gracias de anticipado por la ayuda que me puedan aportar.

macedo 20/08/2005 17:52

Hola lsddigital.

A ver si te sirve esto.

SELECT count(animales.idanimal) as Cuenta ,zonas.idzona
FROM animales, zonas where
animales.idzona=zonas.idzona And zonas.idpais=X
Group by zonas.idzona Order by Cuenta Desc

Saludos

lsddigital 20/08/2005 18:29

muuuchas gracias.. poco a poco me voy aclarando con las agrupaciones

macedo 20/08/2005 18:34

Se me olvidaba.
Si lo que quieres es hacer una consulta textual (por el nombre del pais o por como empieza etc. p.e. Es -> "España" "Estado Unidos") debes sustituir

zonas.idpais=X

por

zonas.idpais in (select idpais from paises where pais like '%Es')

si siguiendo con el ejemplo.

Saludos

lsddigital 20/08/2005 18:40

gracias de nuevo por tu respuesta.. aunque no creo q haga falta el like
zona.idpais in (select idpais from paises where idpais=$idpais)... el idpais es el dato q tengo para hacer la consulta...

por otro lado.. no me confio mucho en los like http://www.forosdelweb.com/f21/resultados-match-mysql-326755/

macedo 20/08/2005 18:54

Lo decía por si querías sacar más de un pais por busqueda textual.

Si lo vas a hacer por idpais con la primera forma esta bien.


Saludos

lsddigital 21/08/2005 14:11

Cita:

Iniciado por macedo
Hola lsddigital.

A ver si te sirve esto.

SELECT count(animales.idanimal) as Cuenta ,zonas.idzona
FROM animales, zonas where
animales.idzona=zonas.idzona And zonas.idpais=X
Group by zonas.idzona Order by Cuenta Desc

Saludos

mnn estas seguro que funciona?!... lo he probado y nada

-------------------------------------------------
dos horas despúes: vale vale.. ya me funciona... olvidalo.. y muchas gracias


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

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