[Cascavel-pm] OFF - Select Mysql
Sammuel Souza
sammuel.souza em gmail.com
Segunda Novembro 19 09:25:05 PST 2012
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
>
--
_____________________
Şặммµεℓ΅
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20121119/c41bd899/attachment-0001.html>
Mais detalhes sobre a lista de discussão Cascavel-pm