Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Count que devuelva 0

Estas en el tema de Count que devuelva 0 en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/08/2007, 03:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 16 años, 11 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 06/08/2007, 03:08
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Count que devuelva 0

Una idea:

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

Saludos!
  #3 (permalink)  
Antiguo 06/08/2007, 03:39
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 16 años, 11 meses
Puntos: 0
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

Última edición por Dio_83; 06/08/2007 a las 03:48
  #4 (permalink)  
Antiguo 06/08/2007, 05:51
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Count que devuelva 0

Pruena con un left join, debería funcionar.
Salu2
  #5 (permalink)  
Antiguo 06/08/2007, 12:32
 
Fecha de Ingreso: mayo-2007
Mensajes: 20
Antigüedad: 16 años, 11 meses
Puntos: 0
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:56.