No meu aplicativo criei 3 tabelas, Empregados, EscalaDeTrabalho e EscalaDeTrabalho_Empregados. Estou tentando criar uma consulta que me retorne a escala de trabalho cadastrada em um período, sendo ascolunas os "dias", as linhas os "Empregados" e o Valor é a contagem do empregado escalado no dia, que será sempre 1. uma coluna com o total de dias trabalhado.
Está dando quase tudo certo, porém em cada Empregado/dia, está me retornando a soma dos dias trabalhados do mesmo, em todos os dias, mesmo que o empregado não tenha trabalhado no dia.
Como resolver?
SELECT Empregados.nomeEmpregado,
Count(If(Day(EscalaDeTrabalho.data)=1,EscalaDeTrabalho_Empregados.id_EscalaDeTrabalho,0)) AS '1',
Count(If(Day(EscalaDeTrabalho.data)=2,EscalaDeTrabalho_Empregados.id_EscalaDeTrabalho,0)) AS '2',
Count(If(Day(EscalaDeTrabalho.data)=3,EscalaDeTrabalho_Empregados.id_EscalaDeTrabalho,0)) AS '3',
Count(EscalaDeTrabalho_Empregados.id_EscalaDeTrabalho) AS DiasTrabalhados
FROM Empregados INNER JOIN
(EscalaDeTrabalho INNER JOIN
EscalaDeTrabalho_Empregados ON
EscalaDeTrabalho.id_EscalaDeTrabalho = EscalaDeTrabalho_Empregados.id_EscalaDeTrabalho) ON
Empregados.idEmpregado = EscalaDeTrabalho_Empregados.id_Empregado
WHERE (((Month(EscalaDeTrabalho.data))=12) AND
((Year(EscalaDeTrabalho.data))=2016))
GROUP BY Empregados.nomeEmpregado ORDER BY Empregados.nomeEmpregado