Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Count que devuelva 0 (http://www.forosdelweb.com/f86/count-que-devuelva-0-a-510270/)

Dio_83 06/08/2007 03:01

Count que devuelva 0
 
Hola buenos días,

estoy perdiendo la cabeza con una cosulta:

-------------------------------------------------
SELECT exg.idEquipo,
count(*) AS ganados
FROM encuentros AS e, equiposxgrupo AS exg
WHERE e.puntos1 > e.puntos2
AND exg.idEquipo = e.idEquipo
GROUP BY exg.idEquipo

TABLA equiposxgrupo
-------------------------------------------------
idEquipo
------ 1
------ 2
------ 3
-------------------------------------------------

TABLA encuentros
-------------------------------------------------
idEquipo y los encuentros con puntos1 y puntos2
------ 1
------ 2
------ 3
-------------------------------------------------


---------------------------------------------------------

por que evidentente, si puntos1 > puntos2 se cumple no hay problema, te cuenta las tuplas y te sale el siguietne resultado:

-------------------------------------------------
equipo count(*) (cuenta los patidos ganados)
1 ------ 1 partido ganado
3 ------ 2 partidos ganados
-------------------------------------------------



El problema es que no sale el equipo 2, porque no ha ganado ningún partido. ¿alguien sabe como puedo hacer para que salga el equipo 2 con patidos ganados = 0?

-------------------------------------------------
equipo count(*) (cuenta los patidos ganados)
1 ------ 1 partido ganado
2 ----- 0 partidos ganados
3 ------ 2 partidos ganados
-------------------------------------------------

Cualquier ayuda se lo agradecería infinitamente.

Gracias por su atención.

Mahalo 06/08/2007 03:08

Re: Count que devuelva 0
 
Una idea:

SELECT exg.idEquipo, IF(COUNT(*)>0, COUNT(*), 0) AS ganados
...

Saludos!

Dio_83 06/08/2007 03:39

Re: Count que devuelva 0
 
SELECT fkequipo,
IF(COUNT(*)>0, COUNT(*), 0) as ganadoscasa
FROM encuentros, equiposxgrupo
WHERE encuentros.resultado is not null
AND encuentros.fkequipo2 is not null
AND encuentros.puntos1 > encuentros.puntos2
AND equiposxgrupo.fkequipo = encuentros.fkequipo1
GROUP BY fkequipo


es incrible, pero sigue funcionando igual.
Si pongo COUNT(*) + 1 me funciona y suma un partido ganado a cada equipo.
Pero al equipo 2 no le asigna 0 partidos ganados.

fkequipo ganadoscasa
1------------- 2
3------------- 2



Mil gracias Mahalo por tu idea.

Seguiré probando a ver

seyko 06/08/2007 05:51

Re: Count que devuelva 0
 
Pruena con un left join, debería funcionar.
Salu2

Dio_83 06/08/2007 12:32

Re: Count que devuelva 0
 
Con LEFT JOIN :
SELECT exg.fkequipo, COUNT( *) AS ganadoscasa
FROM co_encuentros AS e
LEFT JOIN co_equiposxgrupo AS exg
ON e.puntos1 > e.puntos2
AND exg.fkequipo = e.fkequipo1
GROUP BY exg.fkequipo

me sale:

fkequipo ganadoscasa
NULL--4
1 ------1
3 ------1


Me sale NULL en lugar del fkequipo 2.

Gracias Seyko por tu idea.


La zona horaria es GMT -6. Ahora son las 07:40.

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