[Cascavel-pm] OFF - Select Mysql

Renato Santos renato.cron em gmail.com
Domingo Novembro 18 11:56:11 PST 2012


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/f38f1234/attachment.html>


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