Jump to content


Photo

Ajuda Em Seleção


  • Faça o login para participar
2 replies to this topic

#1 carlosins

carlosins

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 26/04/2009, 15:47

Pessoal, estou com dificuldade de realizar o seguinte select:

Selecionar a primeira e a ultima data para cada codigo existente de um funcionario na tabela ponto que é mensal obedecendo a ordem cronologica dos dias. Abaixo um exemplo de registro do funcionario 0911251 na tabela ponto:
2009-04-05 0911251 00020 NULL
2009-04-06 0911251 00020 NULL
2009-04-07 0911251 00020 NULL
2009-04-08 0911251 00020 NULL
2009-04-09 0911251 00000 NULL
2009-04-10 0911251 00020 NULL
2009-04-11 0911251 00172 NULL
2009-04-12 0911251 00000 NULL
2009-04-13 0911251 00000 NULL
2009-04-14 0911251 00000 NULL
2009-04-15 0911251 00000 NULL
2009-04-25 0911251 00000 NULL
2009-04-16 0911251 00000 NULL
2009-04-17 0911251 00000 NULL
2009-04-23 0911251 00020 NULL
Para esse funcionario (0911251) deverei ter de resultado o seguinte:
cod 00020 dtinicial 05-04-2009 dtfinal 08-04-2009
cod 00172 dtinicial 11-04-2009 dtfinal 11-04-2009
cod 00000 dtinicial 12-04-2009 dtfinal 17-04-2009
cod 00020 dtinicial 23-04-2009 dtfinal 23-04-2009
cod 00000 dtinicial 25-04-2009 dtfinal 25-04-2009
Alguém poderia me ajudar nessa demanda?

#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 27/04/2009, 12:55

Tenta isso:
select cod, min(data) as dtFinal, max(data) as dtFinal from tblFuncionarios where idFuncionario = '0911251' group by cod

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#3 carlosins

carlosins

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 27/04/2009, 19:46

Renan, obrigado pela sugetão, testei não está retornando da forma pretendida, veja como ficou:

$rpont = "SELECT entra, min(dia) as dtini, max(dia) as dtfin, date_format(dia, '%d/%m/%Y') as dia, sai, jornd, jornp, jorndif, oco, just FROM ponto WHERE num = '$mat' group by oco order by dia";

Nesse caso ele agrupa por codigo e me retorna como dia inicial a data correta mas a data final ele está pegando a última sem observar a ordem cronológica.

traz assim:
cod 00020 dtinicial 05-04-2009 dtfinal 23-04-2009
cod 00172 dtinicial 11-04-2009 dtfinal 11-04-2009
cod 00000 dtinicial 12-04-2009 dtfinal 25-04-2009

quando deveria ser assim:
cod 00020 dtinicial 05-04-2009 dtfinal 08-04-2009
cod 00172 dtinicial 11-04-2009 dtfinal 11-04-2009
cod 00000 dtinicial 12-04-2009 dtfinal 17-04-2009
cod 00020 dtinicial 23-04-2009 dtfinal 23-04-2009
cod 00000 dtinicial 25-04-2009 dtfinal 25-04-2009

Veja que o codigo 00020 se repete no mes primeiro de 05 a 08/04 e depois no dia 23/04

Com o select pretendo criar tres variáveis (diaini, diafim, cod) que serão usadas para insert em outra tabela

alguma sugestão?



Tenta isso:

select cod, min(data) as dtFinal, max(data) as dtFinal from tblFuncionarios where idFuncionario = '0911251' group by cod






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq