[firebase-br] Join em varias tabelas

Wilson Rosa wsrosa em gmail.com
Seg Maio 5 16:09:41 -03 2014


Gilson,

o seu WHERE tem 3 condições que precisam estar entre parênteses pra que
seja determinada a prevalência das condições, ou seja, qual condição será
executada primeiro e qual será executada depois, ainda mais quando se
envolve AND e OR.

Mas dá pra simplificar assim:

SELECT controle_de_exigencias.procambiental,
       controle_de_exigencias.vencimento,
       processos2.titular,
       auto_infracao.valor_multa
FROM controle_de_exigencias
JOIN processos2               ON controle_de_exigencias.procambiental =
processos2.processoseama
LEFT OUTER JOIN auto_infracao ON controle_de_exigencias.procambiental =
auto_infracao.num_registro
WHERE
      ( controle_de_exigencias.vencimento = '2014/05/01' ) AND
      (
        ( COALESCE( processos2.arquivomorto, 'NÃO' ) = 'NÃO' ) AND
        ( COALESCE( processos2.industria   , 'NÃO' ) = 'NÃO' ) AND
        ( COALESCE( processos2.excluido    , 'N'   ) = 'N'   )
      )

neste caso o COALESCE trará 'NÃO' sempre que campo for NULL, assim não é
necessário ficar comparando IS NULL   *OU*   =ValorPadrão.

e o WHERE fica mais legível: se o vencimento for '2014/05/01'   *E*  se o
arquivomorto for 'NÃO'   *E*  se a industria for 'NÃO'   *E*  se o excluido
for 'N' ....... entra na listagem.

Veja se funciona...




*Wilson Rosawsrosa em gmail.com <wsrosa em gmail.com>*



Em 5 de maio de 2014 15:45, Gilson <gilson em rio-minas.com> escreveu:

> Esse é um exemplo do que estou tentando implementar !
>
> select controle_de_exigencias.procambiental, controle_de_exigencias.vencimento,
> processos2.titular, auto_infracao.VALOR_MULTA from controle_de_exigencias
> join processos2 on controle_de_exigencias.procambiental =
> processos2.processoseama
> Left outer JOIN AUTO_INFRACAO on CONTROLE_DE_EXIGENCIAS.PROCAMBIENTAL =
> AUTO_INFRACAO.NUM_REGISTRO
> where controle_de_exigencias.vencimento = '2014/05/01'
> and processos2.aruivomorto is null
> and processos2.industria is null
> and processos2.excluido is null
> or (processos2.aruivomorto = 'NÃO')
> or (processos2.industria = 'NÃO')
> or (processos2.excluido = 'N')
>
> Em 05/05/2014 15:26, Renan Rogowski Pozzo escreveu:
>
>  Você já tem essa estrutura de tabelas pronta e quer apenas fazer um
>> select ?
>> Como você identifica que o campo BAIXADO é TRUE?
>>
>> Abraço,
>> Renan Rogowski Pozzo
>>
>> *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará." Salmos
>> 37:5*
>>
>>
>> Em 5 de maio de 2014 15:05, Gilson <gilson em rio-minas.com> escreveu:
>>
>>  Boa Tarde Pessoal,
>>>
>>> Estou com o seguinte problema, tenho uma tabela Exigência que guarda
>>> informações da tabela Iema, Semma, FEAM, Igram, tenho um ID que é a
>>> referencia para à tabela Exigência , as tabelas que se relacionam com a
>>> Exigência tem um campo chamado baixado ao qual se o mesmo for true ele
>>> não
>>> deve sair na listagem, mais não consegui visualizar como fazer isso  !!
>>>
>>> Agradeço desde já
>>>
>>> ______________________________________________
>>> 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
>>>
>>>  ______________________________________________
>> 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
>>
>>
>
> ______________________________________________
> 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