[firebase-br] Multiple rows in single select

Carlos H. Cantu listas em warmboot.com.br
Sex Jan 9 14:43:03 -03 2015


Seu where tem condições em campos da tabela de dependentes, portanto,
se não há dependentes, essas condições retornarão false e o registro
não será retornado. Altere o where pra tratar os casos onde não há
dependentes, e use left join, algo do tipo:

left join dependentes b On a.aux_codigo = b.dep_aux_codigo
where (aux_acesso_dependencias = 'S') and ((dep_grau in ('E','P','M','F')
or (dep_grau in ('F','L','T') and ((current_date - dep_dt_nasc) <=
(365*19))) or (dep_grau is null))

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

W> Olá Carlos

W> Já utilizei inner join, full, left em fim tudo que era possivel com relação
W> a joins.

W> Sei que é alguma coisa no where, mas mesmo assim deveria trazer os
W> auxiliares sem os dependentes.

W> Estou tentando aqui.

W> Resultados tão simples de devolver, utilizando apenas 2 tabelas, mas que
W> sempre dão uma dor de cabeça.
W> Prefiro as mais complexas que sempre se resolve.

W> Atenciosamente

W> #######################
W> Washington A. Muller da Silva
W> http://wvoleibol.blogspot.com
W> washington.ams em gmail.com
W> #######################
W> -----Mensagem Original----- 
W> From: Carlos H. Cantu
W> Sent: Friday, January 09, 2015 11:55 AM
W> To: FireBase
W> Subject: Re: [firebase-br] Multiple rows in single select

W> Use um left join ao invés de inner join. Vc tb terá que adaptar o seu
W> WHERE, porque ele tem condições em cima dos dependentes, que como vc
W> mesmo disse, nem sempre existem...

W> []s
W> Carlos H. Cantu
W> www.FireBase.com.br - www.firebirdnews.org
W> www.warmboot.com.br - blog.firebase.com.br

W>> Olá

W>> Colocando o For não dá o erro, mas não traz os auxiliares que não tem
W>> dependentes.

W>> Tinha o select assim no delphi, gerando o relatório

W>> Select a.aux_nome, b.dep_nome, b.dep_dt_nasc,
W>> case b.dep_grau
W>> when 'A' then 'Agregado'
W>> when 'T' then 'Enteado(a)'
W>> when 'E' then 'Esposo(a)'
W>> when 'F' then 'Filho(a)'
W>> when 'I' then 'Irmão(ã)'
W>> when 'M' then 'Mãe'
W>> when 'O' then 'Namorado(a)'
W>> when 'N' then 'Neto(a)'
W>> when 'V' then 'Noivo(a)'
W>> when 'P' then 'Pai'
W>> when 'L' then 'Tutelado(a)'
W>> when 'S' then 'Sogro(a)'
W>> end as Grau
W>> from auxiliares a inner join dependentes b On a.aux_codigo =
W>> b.dep_aux_codigo
W>> where (aux_acesso_dependencias = 'S') and (dep_grau in ('E','P','M','F')
W> or
W>> (dep_grau in ('F','L','T') and ((current_date - dep_dt_nasc) <=
W> (365*19))))
W>> --and (aux_dt_inc between '01.08.2014' and '01.08.2015')
W>> group by aux_nome, dep_nome, dep_dt_nasc, dep_grau
W>> order by aux_nome

W>> Funciona beleza, mas com o mesmo problema, traz os auxiliares e seus
W>> dependentes, mas não retorna os auxiliares que tem acesso as
W> dependencias,
W>> mas não tem dependentes.

W>> Dai tentei resolver com uma SP, mas a situação se mantém.

W>> Obrigado por hora

W>> Atenciosamente

W>> #######################
W>> Washington A. Muller da Silva


W> ______________________________________________
W> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
W> Para saber como gerenciar/excluir seu cadastro na lista, use:
W> http://www.firebase.com.br/fb/artigo.php?id=1107
W> Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista