[firebase-br] RES: RES: Consulta complexa

Matheus Guerra Gmail matheus.oliveira.guerra em gmail.com
Qua Abr 11 14:40:42 -03 2012


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





Mais detalhes sobre a lista de discussão lista