Percorrer tabela

MySQL

18/09/2009

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

Curtidas 0

Respostas

Facc

Facc

18/09/2009

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?


GOSTEI 0
Facc

Facc

18/09/2009

Alguém?


GOSTEI 0
Facc

Facc

18/09/2009

Resolvido.


GOSTEI 0
Carlos Mazzi

Carlos Mazzi

18/09/2009

Tem como vc postar a solucao , amigo?
GOSTEI 0
Fábio Cruz

Fábio Cruz

18/09/2009

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

GOSTEI 0
José

José

18/09/2009

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