[Cascavel-pm] OFF - Select Mysql

Sammuel Souza sammuel.souza em gmail.com
Domingo Novembro 18 13:21:35 PST 2012


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>
>
>


-- 
_____________________
 Şặммµεℓ΅
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20121118/cbd3eac6/attachment.html>


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