Bom dia, colegas. Tudo certo? Eu estou desenvolvendo uma aplicação de ponto, aonde o meu usuário irá poder registrar quantos pontos quiser. Eu fiz uma validação através de um @contador no meu sql e usei a função mod(@contador,2) do mysql pra saber se o meu contador é par ou impar, sendo que se ele for impar a pessoa registrou o ponto para entrar na empresa e se for par para sair da empresa.
Mas estou com um problema de cair os cabelos aqui. Quando executo o mesmo sql duas vezes, me traz resultado diferente. Alguém consegue ver algo que não estou vendo no meu sql aqui?
Coloquei ele abaixo e vou também inserir um vídeo nesse link (https://drive.google.com/file/d/1ExA_Fs5dsB_sNV0jj8f_swEkad9k4NCu/view?usp=sharing) para vocês verem eu executando o sql duas vezes e ele me retornando os dados diferentes
select a.name,
a.date,
time_format( SEC_TO_TIME( SUM( TIME_TO_SEC( a.entrada) ) ),'%H:%i:%s') AS ENTRADA,
a.saida,
a.origem,
time_format( a.firstEntry,'%H:%i:%s') AS primeiraentrada,
time_format( a.firstExit,'%H:%i:%s') AS primeirasaida,
time_format( a.secondEntry,'%H:%i:%s') AS segundaentrada,
time_format( a.secondExit,'%H:%i:%s') AS segundasaida
from (
select collaborators.name,
points.date,
cast(points.hour as time) as entrada,
0 as saida,
@CONTADOR := @CONTADOR + 1 as contador,
mod(@CONTADOR , 2) as teste,
case
when mod(@CONTADOR , 2) = 0 then 'saída'
else 'entrada'
end as origem,
workdays.firstEntry,
workdays.firstExit,
workdays.secondEntry,
workdays.secondExit
from points
inner join collaborators
on collaborators.id = points.collaborator
inner join workdays
on workdays.id = collaborators.workday) a
where a.teste = 1
GROUP BY 2,1