[Cascavel-pm] OFF - Select Mysql

Renato Santos renato.cron em gmail.com
Domingo Novembro 18 13:28:05 PST 2012


pensei q vc já tinha 2 tabelas separadas com o funcionario.

já que não tem, tem q agrupar por todas as colunas.

SELECT a.cd_funcionario,
       a.nm_funcionario,
       a.cd_cargofuncao,
       a.cd_situacao,
       a.dt_admissao,
       a.dt_ocorrencia_aud
FROM   aud_folhfuncionario AS a
       INNER JOIN (SELECT *Max*(dt_ocorrencia_aud)AS dt_ocorrencia_aud,
                          cd_funcionario,
                          cd_cargofuncao,
                          cd_situacao
                   FROM   aud_folhfuncionario
                   GROUP  BY cd_funcionario) AS b
               ON a.dt_ocorrencia_aud = b.dt_ocorrencia_aud
                  AND a.cd_cargofuncao = b.cd_cargofuncao
                  AND a.cd_situacao = b.cd_situacao
WHERE  a.cd_situacao <> 9
*GROUP BY 1,2,3,4,5,6; *

2012/11/18 Sammuel Souza <sammuel.souza em gmail.com>

> Consegui pegar o ultimo registro porem mostra todos
>
> select
> a.cd_funcionario,a.nm_funcionario,a.cd_cargofuncao,a.cd_Situacao,a.Dt_admissao,a.dt_ocorrencia_aud
> from AUD_FOLHFuncionario as a inner join (select max(dt_ocorrencia_AUD)as
> dt_ocorrencia_aud,cd_funcionario,cd_cargofuncao,cd_Situacao from
> AUD_FOLHFuncionario group by cd_funcionario) as b on a.dt_ocorrencia_aud =
> b.dt_ocorrencia_aud and a.cd_cargofuncao=b.cd_cargofuncao and
> a.cd_Situacao=b.cd_Situacao where a.cd_Situacao<>9;
>
>
>
> Sammuel
>
> Em 18 de novembro de 2012 16:56, Renato Santos <renato.cron em gmail.com>escreveu:
>
> Uma maneira de fazer isso é fazer uma subconsulta sobre um select com o id
>> do funcionario + a ultima data.
>>
>> SELECT *
>> FROM ...
>> WHERE
>> (cd, data_ocorrencia) = (
>>     SELECT cd, max(data_ocorrencia)
>>     FROM ..
>>     GROUP BY cd;
>> )
>>
>> porém nem todos os bancos suportam esse tipo de comparação em conjunto.
>> Postgres funciona.
>>
>> Em mysql talvez você precise colocar isso num inner join:
>> SELECT *
>> FROM tabela_func me, outras..
>> INNER JOIN (cd, data_ocorrencia) = (
>>     SELECT cd, max(data_ocorrencia)
>>     FROM ..
>>     GROUP BY cd;
>> ) sub ON (sub.cd = me.cd AND sub.max = me.data_ocorrencia)
>>
>>  Boa sorte,
>>
>> nao cheguei a testar, só é a ideia mesmo
>>
>> 2012/11/18 Sammuel Souza <sammuel.souza em gmail.com>
>>
>>> Boa Tarde,
>>>
>>> sei que o forum é de PERL porem nao participo de forum MySQL
>>>
>>> Caso alguem puder me ajudar.
>>>
>>> cd    funcionario        cd_Funcao    cd_situ        data_ocorrencia
>>> 2    ANTANA ODESTO        62        1        2004-08-09 09:30:33
>>> 2    ANTANA ODESTO        78        1        2009-05-21 10:06:24
>>> 2    ANTANA ODESTO        62        1        2010-10-26 08:43:12
>>> 6    ALTER LVES DO        55        1        2005-04-15 10:44:14
>>> 6    ALTER LVES DO        84        1        2012-01-24 17:16:40
>>> 6    ALTER LVES DO        84        1        2012-09-06 16:53:47
>>> 11    NESIO ONSALVES        60        1        2004-08-09 11:59:56
>>> 11    NESIO ONSALVES        60        99        2010-08-25 10:43:32
>>>
>>> a tabela Funcionarios cria outro registro para o funcionario quando muda
>>> os dados assim incluindo a data da alteracao, pois o registro que serve é o
>>> com a data maior.
>>>
>>> Preciso fazer um select onde mostra dos dados do ultimo registro.
>>>
>>> Group by
>>>
>>> select * from uncionario where cd_situ<>99 group by cd_funcionario;
>>>
>>> mostra assim:
>>> 2    ANTANA ODESTO        62        1        2004-08-09 09:30:33
>>> 6    ALTER LVES DO        55        1        2005-04-15 10:44:14
>>> 11    NESIO ONSALVES        60        1        2004-08-09 11:59:56
>>>
>>> select * from uncionario where cd_situ<>99 group by
>>> cd_funcionario,data_ocorrencia DESC;
>>>
>>> mostra todos os registro em ordem de data, porem quero somente o ultimo.
>>>
>>> Alguem poderia me ajudar?
>>>
>>> _______________________________________________
>>> Cascavel-pm mailing list
>>> Cascavel-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>>
>>
>>
>>
>> --
>> Saravá,
>> Renato CRON
>> http://www.renatocron.com/blog/
>> @renato_cron <http://twitter.com/#!/renato_cron>
>>
>>
>
>
> --
> _____________________
>  Şặммµεℓ΅
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>



-- 
Saravá,
Renato CRON
http://www.renatocron.com/blog/
@renato_cron <http://twitter.com/#!/renato_cron>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20121118/b4b9bbaf/attachment-0001.html>


Mais detalhes sobre a lista de discussão Cascavel-pm