Fórum Percorrer tabela #31388

18/09/2009

0

Boa tarde, como faço para percorrer uma tabela identificando se o funcionario esqueceu/pulou algum registro?

Estrutura da tabela
idMetas int AutoInc
MesAno VarChar(10)
Atingiu  Char(1)
idFuncionario int


Ex. de dados gravados
idMetas      MesAno       Atingiu    idFuncionario
1             2008-08-01       S              115
2             2008-09-01       S              115
3             2008-11-01       N              115


nesse exemplo, deveria acusar que ele esqueceu/pulou o mês 10/2008.

Como faço para resolver isso?


Facc

Facc

Responder

Posts

21/09/2009

Facc

Achei esse SQL na NET (uma ajuda de outro forum)
Link: [url]http://felipe.c2zlabs.com/identificando-intervalos-entre-datas-no-mysql[/url]

Funciona perfeitamente qndo se tem apenas um funcionario na tabela, porém se existem mais funcionarios e alguns deles preencherem todas as datas, para os demais (que pularam/esqueceram) retorna como se tivesse tudo preenchido.

Alguem pode me ajudar a alterar essa sql?


Responder

Gostei + 0

21/09/2009

Facc

Alguém?


Responder

Gostei + 0

22/09/2009

Facc

Resolvido.


Responder

Gostei + 0

17/06/2010

Carlos Mazzi

Tem como vc postar a solucao , amigo?
Responder

Gostei + 0

17/06/2010

Fábio Cruz

Consegui essa SQL em outro forum

SELECT COUNT(DATE_ADD(X.INICIO, INTERVAL Y.N MONTH)) DATA
         FROM (SELECT MIN(mesano) inicio, MAX(mesano) fim
                 FROM metas
                WHERE CPF = ' < CPF > ') X
         JOIN ( SELECT A.A+B.B+1 N
                  FROM (SELECT 0 A UNION ALL
                        SELECT 1 UNION ALL
                        SELECT 2 UNION ALL
                        SELECT 3 UNION ALL
                        SELECT 4 UNION ALL
                        SELECT 5 UNION ALL
                        SELECT 6 UNION ALL
                        SELECT 7 UNION ALL
                        SELECT 8 UNION ALL
                        SELECT 9) A,
                       (SELECT 0 B UNION ALL
                        SELECT 10 UNION ALL
                        SELECT 20 UNION ALL
                        SELECT 30 UNION ALL
                        SELECT 40 UNION ALL
                        SELECT 50 UNION ALL
                        SELECT 60 UNION ALL
                        SELECT 70 UNION ALL
                        SELECT 80 UNION ALL
                        SELECT 90) B
                ORDER BY 1) Y
         ON DATE_ADD(X.inicio, INTERVAL Y.N MONTH) <= X.FIM
         LEFT JOIN metas M
           ON M.mesano = DATE_ADD(X.inicio, INTERVAL Y.N MONTH)
           AND M.CPF = ' < CPF > '
         WHERE M.mesano IS NULL

Responder

Gostei + 0

16/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar