[firebase-br] RES: Consulta complexa

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


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





Mais detalhes sobre a lista de discussão lista