[firebase-br] AJUDA COM SELECT 2 ..... OUTRA AJUDA.

Kléber Caneva kdcc em terra.com.br
Qua Maio 24 08:43:05 -03 2006


Primeiramente, procure usar JOINs eles ajudam a deixar o Select mais 
entendivel. O uso de alias menores (até 3 letras por exemplo) também ajuda 
bastante.

 select cp.ds_pagina || ' ' || cp.ds_linha || cp.ds_coluna Quadrante,
        cli.nm_entidade,
        cli.tp_entrega,
        end.ds_endereco,
        end.nr_numero,
        end.ds_pontoref,
        end.ds_bairro,
        op.nm_entidade Operador,
        eop.ds_endereco,
        eop.nr_numero,
        eop.ds_pontoref,
        eop.ds_bairro,
        mb.nm_entidade Motoboy
   from TB_PEDIDO ped
        Join TB_PEDIDO_NIVEL pn on (pn.id_pedido = ped.id_pedido and 
pn.ID_NIVEL = 10)
        Join TB_ENTIDADE cli on (cli.id_entidade = ped.id_entidade)
           Join TB_ENDERECO end on (end.id_entidade = cli.id_entidade and 
end.fl_tipo = 'E')
              Join TB_CEP cp on (cp.id_cep = end.id_cep)
        Join TB_ENTIDADE op on (op.id_entidade = ped.ID_ENTIDADE_RESP and 
op.fl_tipo = 'E')
           Join TB_ENDERECO eop on (eop.id_entidade = op.id_entidade )
        Join TB_ENTIDADE mb on (mb.id_entidade = ped.ID_ENTIDADE_ENT)


Segundo, mesmo que você não traga precise dos dados, os campos devem 
aparecem, não há como eu um registro tem 10 campos e em outro apenas 5.

Terceiro o "IF" no FB é a clausula CASE. Procure nos historicos da Lista no 
no Site da Firebase para aprender sobre este comendo.


[]´s

Kléber Caneva

----- Original Message ----- 
From: "Adalberto de Sousa Monteiro" <asm190 em gmail.com>
To: <lista em firebase.com.br>
Sent: Tuesday, May 23, 2006 9:38 PM
Subject: [firebase-br] AJUDA COM SELECT 2 ..... OUTRA AJUDA.


BOA NOITE PESSOAL ....
SE PUDEREM ME AJUDAR COM ESSE SELECT TAMBEM .... AGRADECERIA.
É O SEGUINTE, TENHO SEGUINTE SELECT.

 select cp.ds_pagina || ' ' || cp.ds_linha || cp.ds_coluna Quadrante,
        cli.nm_entidade,
        cli.tp_entrega,
        endereco.ds_endereco,
        endereco.nr_numero,
        endereco.ds_pontoref,
        endereco.ds_bairro,
        operador.nm_entidade Operador,
        endOperador.ds_endereco,
        endOperador.nr_numero,
        endOperador.ds_pontoref,
        endOperador.ds_bairro,
        motoboy.nm_entidade Motoboy
   from TB_PEDIDO ped,
        TB_PEDIDO_NIVEL pednivel,
        TB_ENTIDADE cli,
        TB_ENTIDADE operador,
        TB_ENTIDADE motoboy,
        TB_ENDERECO endereco,
        TB_ENDERECO endOperador,
        TB_CEP cp
  where cli.id_entidade = ped.id_entidade
    and operador.id_entidade = ped.ID_ENTIDADE_RESP
    and motoboy.id_entidade = ped.ID_ENTIDADE_ENT
    and endereco.id_entidade = cli.id_entidade
    and endereco.fl_tipo = 'E'
    and endOperador.id_entidade = operador.id_entidade
    and endOperador.fl_tipo = 'E'
    and cp.id_cep = endereco.id_cep
    and pednivel.id_pedido = ped.id_pedido
    and pednivel.ID_NIVEL = 10

E EU PRECISO TRAZER O ENDEREÇO DO OPERADOR APENAS QUANDO O CAMPO 
CLI.TP_ENTREGA FOR = 'O', CASO CONTRARIO NAO PRECISO TRAZER OS DADOS DO 
ENDEREÇO DO OPERADOR, COMO FAÇO ESSE "IF" NA LINHA DO SELECT ?

SERIA ALGO "MAIS OU MENOS" ASSIM

 select cp.ds_pagina || ' ' || cp.ds_linha || cp.ds_coluna Quadrante,
        cli.nm_entidade,
        cli.tp_entrega,
        endereco.ds_endereco,
        endereco.nr_numero,
        endereco.ds_pontoref,
        endereco.ds_bairro,
        operador.nm_entidade Operador,
        IF CLI.TP_ENTREGA = 'O' THEN
        BEGIN
           endOperador.ds_endereco,
           endOperador.nr_numero,
           endOperador.ds_pontoref,
           endOperador.ds_bairro,
        END
        motoboy.nm_entidade Motoboy
   from TB_PEDIDO ped,
        TB_PEDIDO_NIVEL pednivel,
        TB_ENTIDADE cli,
        TB_ENTIDADE operador,
        TB_ENTIDADE motoboy,
        TB_ENDERECO endereco,
        TB_ENDERECO endOperador,
        TB_CEP cp
  where cli.id_entidade = ped.id_entidade
    and operador.id_entidade = ped.ID_ENTIDADE_RESP
    and motoboy.id_entidade = ped.ID_ENTIDADE_ENT
    and endereco.id_entidade = cli.id_entidade
    and endereco.fl_tipo = 'E'
    and endOperador.id_entidade = operador.id_entidade
    and endOperador.fl_tipo = 'E'
    and cp.id_cep = endereco.id_cep
    and pednivel.id_pedido = ped.id_pedido
    and pednivel.ID_NIVEL = 10

VALEU PESSOAL E UMA BOA NOITE A TODOS
ADALBERTO
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

E-mail classificado pelo Identificador de Spam Inteligente Terra.
Para alterar a categoria classificada, visite
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,1148433057.504760.7609.alcuta.terra.com.br,6296,Des15,Des15

Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 23/05/2006 / Versão: 
4.4.00/4768
Proteja o seu e-mail Terra: http://mail.terra.com.br/








Mais detalhes sobre a lista de discussão lista