[Cascavel-pm] OFF - Select Mysql

Eduardo Maia maia em eduardomaia.com
Segunda Novembro 19 09:59:57 PST 2012


Ah, eu havia entendido errado!

SELECT funcionario, cd_Funcao, cd_situ, MAX(data_ocorrencia)
FROM funcionarios
GROUP BY funcionario, cd_Funcao, cd_situ

Se ainda não foi possível resolver sua questão, por favor envia um desc das
tabelas que entram nessa query.

Abs


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

> Boa Tarde,
>
> eu quero mostrar todos os usuarios e nao somente 3 registro.
>
>
> select * from uncionario where cd_situ<>99 group by cd_funcionario;
>
> pois toda vez que altera os dados ele cria um registro novo com todas as
> informações colocando apenas a data no data_ocorrencia
>
> Assim se o funcionario foi demitido ou retornou para empresa, somente com
> o ultimo registro no data_ocorrencia.
>
> Se eu colocar limit 1
>
> ele nao vai mostrar todos os funcionarios somente o primeiro.
>
> Em 19 de novembro de 2012 13:58, Eduardo Maia <maia em eduardomaia.com>escreveu:
>
> A solicitação do desenvolvedor foi:
>>
>>
>> "Preciso fazer um select onde mostra dos dados *do ultimo registro*."
>>
>> "mostra todos os registro em ordem de data, porem *quero somente o ultimo
>> *."
>>
>> Para trazer apenas um registro, o último ou o primeiro (dependendo do
>> order by), utiliza-se em MySQL o *LIMIT*. Dei inclusive dois exemplos no
>> email anterior.
>>
>>
>> select * from produto order by rand() *limit 1*
>>
>> select nome from lojista where email like '%gmail%' *limit 1*
>>
>> É possível colocar (por exemplo) limit 3 se for para trazer 3 registros -
>> mais uma vez, os 3 últimos ou 3 primeiros, dependendo do order by.
>>
>> Não ficou claro? Viajei em alguma coisa?
>>
>>
>>
>> 2012/11/19 Renato Santos <renato.cron em gmail.com>
>>
>>> ???!
>>> Em 19/11/2012 12:05, "Eduardo Maia" <maia em eduardomaia.com> escreveu:
>>>
>>> Sugiro utilizar *LIMIT 1*
>>>>
>>>> select * from produto order by rand() limit 1
>>>>
>>>> select nome from lojista where email like '%gmail%' limit 1
>>>>
>>>> Abs
>>>>
>>>>
>>>> 2012/11/18 Renato Santos <renato.cron em gmail.com>
>>>>
>>>>> 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>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Cascavel-pm mailing list
>>>>> Cascavel-pm em pm.org
>>>>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Cascavel-pm mailing list
>>>> Cascavel-pm em pm.org
>>>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>>>
>>>
>>> _______________________________________________
>>> Cascavel-pm mailing list
>>> Cascavel-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>>
>>
>>
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
>
>
>
> --
> _____________________
>  Şặммµεℓ΅
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20121119/26e774af/attachment-0001.html>


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