[firebase-br] Join trazer qtde determinada

CPD (Borborema) cpd em borborema.com.br
Seg Out 19 16:58:47 -03 2009


Elton,

    Obrigado por está me ajudando, mas ainda está dando erro. Vamos 
trabalhar em cima da primeiro select. :

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)

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
FUN.CFG_EMPRESA.
At line 12, column 38.

Elton, acredito que é referente a sub-select dentro da do left outer join 
que segundo alguns colegas do gropo nas versões 2.1.xx está aceitando está 
sintax, mas ele critica o campo FUN.CFG_EMPRESA que não faz parte da 
sub-select. Quando eu tiro, para teste, o campo na where da sub-select que 
não faz parte da da tabela da mesma (FUN.CFG_EMPRESA) não dar erro, mas da 
problema no result, porque puxa a 1ª ferias independente do funcionário.

Bem, não sei se deu pra vc endetender, mas o problema e em um campos 
(FUN.CFG_EMPRESA) que não faz parte da tabela da sub-select no segundo left 
outer join.

Alexandre.

----- Original Message ----- 
From: "Elton da Motta Barbosa" <embarbosa em gmail.com>
To: <lista em firebase.com.br>
Sent: Thursday, October 15, 2009 9:51 AM
Subject: [firebase-br] Join trazer qtde determinada


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,

______________________________________________
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