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

Matheus Guerra Gmail matheus.oliveira.guerra em gmail.com
Qua Abr 11 15:18:57 -03 2012


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/


______________________________________________
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





Mais detalhes sobre a lista de discussão lista