Consulta sobre count(*) en una consulta múltiple

Estoy desarrollando un sistema de votaciones presidenciales electrónicas, y necesito obtener la cantidad de votos por cada partido político, el tema es que mi consulta solo me retorna registros si es que existen votos para ese partido en la tabla tb_voto sino no retorna registros, yo necesito que me devuelva 0 en el campo "votos" cuando no hayan votos para ese partido
mi procedimiento es el siguiente:
DELIMITER $
DROP PROCEDURE IF EXISTS spRealizarEscrutinio$
CREATE PROCEDURE spRealizarEscrutinio(
IN consuladoID varchar(10)
)
BEGIN
select b.partidoID, b.nombre as nombrePartido, c.nombre as nombreCandidato,
b.logo, c.foto, count(*) as votos from tb_voto a
join tb_partido b on a.partidoID = b.partidoID
join tb_candidato c on b.candidatoID = c.candidatoID
join tb_consulado d on d.consuladoID = a.consuladoID
where d.consuladoID = consuladoID and d.estado = '2' and a.partidoID != '000'
group by b.partidoID order by 6 desc;
END$
DELIMITER ;
Cuando hago un count(*) simple a la tabla votos, sin mostrar ningún campo adicional si funciona, retorna '0' pero yo necesito retornar también los otros campos
Respuesta
1
Prueba así:
select b.partidoID, b.nombre as nombrePartido, c.nombre as nombreCandidato,b.logo, c.foto,
votos = (select count(*) from tb_voto a where d.consuladoID = a.consuladoID and d.estado = '2' and a.partidoID != '000')
from tb_partido b, tb_candidato c, tb_consulado d
WHERE
a.partidoID = b.partidoID AND
b.candidatoID = c.candidatoID AND
d.consuladoID = a.consuladoID
group by b.partidoID order by 6 desc
saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas