[firebase-br] Join trazer qtde determinada

Elton da Motta Barbosa embarbosa em gmail.com
Qui Out 15 09:51:37 -03 2009


Poderia ser algo assim. Como não tenho a estrutura das suas tabelas
pode haver algum erro. Corrija os alias caso não estejam referenciando
a tabela corretamente.
select
  sf.sfo_codigo,
  sf.sfo_nome,
  fun.cfg_chapa,
  fun.cfg_nome,
  fer2.fer_funcionario,
  fer2.fer_ano,
  fer2.fer_mes
from setores_folha sf
left outer join funcionarios fun on (fun.cfg_empresa = sf.sfo_empresa)
and (fun.cfg_setor = sf.sfo_codigo) and (fun.cfg_condicao = '1')
left outer join (select first 1 * from ferias fer1 where
(fer1.fer_empresa = fun.cfg_empresa) and (fer1.fer_funcionario =
fun.cfg_cpf) order by fer1.fer_ano desc, fer1.fer_mes desc) as fer2 on
1 = 1
where (sf.sfo_empresa = :empresa) and (sf.sfo_codigo = :setor)


Pelo que eu entendi você quer a última férias de cada funcionário do
setor. Se estiver correto nas minhas deduções, eu aconselharia outro
forma desse query.
Se as férias tiverem um id e forem lançadas de forma cronológica,
então o SQL abaixo resultará no requerido:


select
  sf.sfo_codigo,
  sf.sfo_nome,
  fun.cfg_chapa,
  fun.cfg_nome,
  fer2.fer_funcionario,
  fer2.fer_ano,
  fer2.fer_mes
from setores_folha sf
left outer join funcionarios fun on (fun.cfg_empresa = sf.sfo_empresa)
and (fun.cfg_setor = sf.sfo_codigo) and (fun.cfg_condicao = '1')
left outer join (select * from ferias fer1 where (fer1.fer_empresa =
:empresa) and (not exists (select 1 from ferias bb where
bb.CahvePrimaria > fer1.ChavePrimaria and bb.fun_cpf = fer1.fun_cpf)
order by fer1.fer_ano desc, fer1.fer_mes desc) as fer2 on 1 = 1
where (sf.sfo_empresa = :empresa) and (sf.sfo_codigo = :setor)


 Bem, seria algo parecido, mas não sem as definições das suas tabelas
não posso ir adiante. Se nenhuma das sugestões funcionar, responda com
a mensagem completa de erro de cada caso, bem como dizendo as
definições da tabela.

Espero Que Ajude,




Mais detalhes sobre a lista de discussão lista