0
respostas

Meu SQL está retornando valores diferentes a cada solicitação

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software