[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