[firebase-br] RES: RES: RES: Consulta complexa

Hélio Oliveira hpensador em gmail.com
Qua Abr 11 15:57:03 -03 2012


Matheus obrigado pela força... eu realmente estou convencido de que a 
minha solução só mesmo atraves de uma SP retornavel.

> Se for para retorna todos os registros de cada matricula da
> FUNCIONARIO_SIGA, e também o registro de cada matricula da FUNCIONARIO,
> retornara mais de uma linha se tiver mais de um registro na FUNCIONARIO_SIGA
> se for feito só um select. Eu desconheço uma forma para não retornar mais de
> outro registro.  Talvez possa ser feito uma procedure fazendo o tratamento
> com um while.
> Tem que ver aonde vai colocar essas informações e qual o fim, se não quer
> que retorne muitos registros iguais da tabela FUNCIONARIO, cria duas query.
>
> Att,
> Matheus Guerra
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
> nome de Hélio Oliveira
> Enviada em: quarta-feira, 11 de abril de 2012 14:55
> Para: lista em firebase.com.br
> Assunto: Re: [firebase-br] RES: RES: Consulta complexa
>
> Boa tarde Matheus!
>
> Sim, todos os atos de admissão e ou afastamento - porém, apenas os daquele
> mes/ano especificado.
>
> Ocorre que a junção faz com que sejam retornados todos os registros da
> tabela FUNCIONARIO_SIGA. No exemplo que citei e estou executando aqui é como
> se o cliente fosse gerar os dados de meses/anos anteriores.
>
> Se fosse somente as informações atuais, creio que com sua solução do MAX
> resolveria.
>
>
>> Boa tarde Hélio,
>>
>> 	Tem que retornar todos os ato de adimissao?
>>
>> -----Mensagem original-----
>> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> Em
>> nome de Hélio Oliveira
>> Enviada em: quarta-feira, 11 de abril de 2012 14:23
>> Para: lista em firebase.com.br
>> Assunto: Re: [firebase-br] RES: Consulta complexa
>>
>> Boa tarde Matheus!
>>
>> Esta solução realmente só irá me retornar 2 registros, porém não atende
>> - pois, o max fará com que só retorne no caso o ultimo ato e não é bem
> isto.
>> No exemplo que citei inicialmente o ato de adimissão é de número 1 e os
>> demais são maiores.
>>
>>> Você tem que ver o qual dado precisa da FUNCIONARIO_SIGA. Uma forma
>>> que pode ser usada para retornar somente uma linha para cada registro
>>> da tabela FUNCIONARIO, e agrupar pelos dados da FUNCIONARIO. segue
> abaixo.
>>>
>>> select
>>>                x.matricula,
>>>                x.nome,
>>>                x.data_admissao,
>>>                max(w.numero_ato),
>>>                max(w.data_ato),
>>>                max(w.tipo_ato)
>>> from   FUNCIONARIO x
>>>                 join FUNCIONARIO_SIGA w on (w.matricula = x.matricula)
>>> where extract(month from x.data_admissao) = :mes
>>>       and extract(year from x.data_admissao)  = :ano group by
>>> x.matricula,
>>>                       x.nome,
>>>                       x.data_admissao
>>>
>>> att,
>>> Matheus Guerra
>>> -----Mensagem original-----
>>> De: lista-bounces em firebase.com.br
>>> [mailto:lista-bounces em firebase.com.br] Em nome de Hélio Oliveira
>>> Enviada em: quarta-feira, 11 de abril de 2012 10:14
>>> Para: lista em firebase.com.br
>>> Assunto: [firebase-br] Consulta complexa
>>>
>>> Bom dia Colegas!
>>>
>>> Tenho duas tabelas (FUNCIONARIO e FUNCIONARIO_SIGA) com uma relação de
>>> 1 x N ou seja, um Funcionário pode ter um ou n-registros na tabela
>>> FUNCIONARIO_SIGA. Acontece que ao fazer o select:
>>>
>>> select distinct
>>>            x.matricula,
>>>            x.nome,
>>>            x.data_admissao,
>>>            w.numero_ato,
>>>            w.data_ato,
>>>            w.tipo_ato
>>> from FUNCIONARIO x
>>>       join FUNCIONARIO_SIGA w on (w.matricula = x.matricula) where
>>> extract(month from x.data_admissao) = :mes
>>>       and extract(year from x.data_admissao)  = :ano
>>>
>>> Se coloco mes = 1 e ano = 1995 deveria ser retornado apenas 2
>>> registros, já que só há 2 funcionários admitidos no mês 1/1995, porém
>>> esta consulta me retorna 6 registros devido a cada um dos funcionários
>>> ter na tabela FUNCIONARIO_SIGA 3 registros cada.
>>>
>>> Há alguma forma de ser contornado isto, fazendo com que a referida
>>> consulta só me retorne os 2 registros?
>>>
>>> --
>>> []'s,
>>>
>>> Hélio Oliveira
>>> Analista de Sistemas
>>> Delphi Developer
>>> http://hpensador.blogspot.com/
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>>
>> --
>> []'s,
>>
>> Hélio Oliveira
>> Analista de Sistemas
>> Delphi Developer
>> http://hpensador.blogspot.com/
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
>> saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>


-- 
[]'s,

Hélio Oliveira
Analista de Sistemas
Delphi Developer
http://hpensador.blogspot.com/





Mais detalhes sobre a lista de discussão lista