Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bertani

Usando Distinct

Recommended Posts

Pessoa, bom dia!

 

Estou precisando de uma ajuda no select abaixo. Quando coloco o distinct da erro, ele fica executando ate informar uma mensagem de tempo. Assim, como devo ou se posso usar o distinct no select que fiz.

Eu não tenho muito o jeito com o Oracle, assim, gostaria de uma ajuda.

 

Obrigado

 

Select RPA.RPA_NUM,
      RPA.CID_COD,
      RPA.CID_CID_COD,
      RPA.COD_TAB_FRETE,
      RPA.STF_COD,
      RPA.TF_COD,
      RPA.RPA_VLR_FRETE_PG,
      RPA.RPA_OBS,
      RPA.RPA_CTF,
      RPA.RPA_ENTREGAS,
      RPA.RPA_GERENC_RISCO,
      RPA.RPA_CATEGORIA,
      RPA.DT_ENVIO,
      RPA.RPA_HR_EMISSAO,

      RPA_AUTORIZACAO.AR_SEQ,

      RPA_COMPOSICAO.rc_seq,

      DUP_CEDENTE.CDE_COD,
      DUP_CEDENTE.DC_COD,
      DUP_CEDENTE.mda_cod,
      DUP_CEDENTE.stf_cod,
      DUP_CEDENTE.pcac_cod,
      DUP_CEDENTE.forma_rec_cod,        
      DUP_CEDENTE.dupc_nro_dup,
      DUP_CEDENTE.DUPC_DOC_FAV,
      DUP_CEDENTE.dupc_vl_total,
      DUP_CEDENTE.dupc_dt_pag,
      DUP_CEDENTE.dupc_transf,
      DUP_CEDENTE.dupc_doc_repom,

      a.COD_CARRETA as a_carreta,
      a.VEI_PLACA as a_placa,
      a.VEI_CATEGORIA as a_categoria,
      a.VEI_FROTA as a_frota,

      b.COD_CARRETA as b_carreta,
      b.VEI_PLACA as b_placa,
      b.VEI_CATEGORIA as b_categoria,
      b.VEI_FROTA as b_frota,

      TABELA_FRETE.TF_TIPO_VEIC,

      CONTA.COD_REM,     
      CONTA.PCA_REM,
      CONTA.BCO_COD,
      CONTA.AGE_COD,
      CONTA.MDA_COD,
      CONTA.TPC_COD,
      CONTA.TC_COD,
      CONTA.CTB_COD,
      CONTA.CTB_CORRENTE,
      CONTA.CTB_NUM,

      MOTOR.CG_NOME as motor_nome,

      MOTORI.CGP_END as motori_end,
      MOTORI.CGP_NUM as motori_num,
      MOTORI.CGP_CEP as motori_cep,
      MOTORI.CGP_COMP as motori_comp,
      MOTORI.CGP_BAIRRO as motori_bairro,

      PROP.CG_NOME as prop_nome,

      PROPR.CGP_END as propr_end,
      PROPR.CGP_NUM as propr_num,
      PROPR.CGP_CEP as propr_cep,
      PROPR.CGP_COMP as propr_comp,
      PROPR.CGP_BAIRRO as propr_bairro,

      DOC_CEDENTE.DC_COD,
      DOC_CEDENTE.DC_SERIE,
      DOC_CEDENTE.DC_TIPO,
      DOC_CEDENTE.DC_VL_TOT,
      DOC_CEDENTE.DC_OBS,
      DOC_CEDENTE.REM_NUM,
      DOC_CEDENTE.dc_prov,

      CONTATO.CTO_COD,
      CONTATO.CTO_TEL,
      CONTATO.CTO_EMAIL,

      CARGA.TP_VEI,
      CARGA.CAR_PES_REAL,
      CARGA.CAR_QTD_LACRE,

      PERCURSO_RPA.PER_RPA_SEQ,
      PERCURSO_RPA.ATV_COD,
      PERCURSO_RPA.NF_NUM_NF,
      PERCURSO_RPA.PCA_COD,
      PERCURSO_RPA.ORG_COD,

      PRACA.PCA_END,
      PRACA.PCA_CEP,
      praca.pca_bai,
      PRACA.pca_end_cob,
      PRACA.pca_cep_cob,
      PRACA.pca_bai_cob,
      PRACA.pca_end_fiscal,

      PRACA_CEDENTE.PCAC_COD,      

      dest.cod_ibge as dest_ibge,      
      orig.cod_ibge as orig_ibge

  From RPA

 Inner Join DOC_CEDENTE On DOC_CEDENTE.rpa_num = RPA.RPA_NUM

 Inner Join DUP_CEDENTE On DUP_CEDENTE.FIL_COD  = DOC_CEDENTE.FIL_COD
                       And DUP_CEDENTE.CDE_COD  = DOC_CEDENTE.CDE_COD
                       And DUP_CEDENTE.PCAC_COD = DOC_CEDENTE.PCAC_COD
                       And DUP_CEDENTE.DC_COD   = DOC_CEDENTE.DC_COD

 Inner Join RPA_AUTORIZACAO ON RPA_AUTORIZACAO.RPA_NUM = RPA.RPA_NUM

 Inner Join RPA_COMPOSICAO On RPA_COMPOSICAO.RPA_NUM = RPA.RPA_NUM

 Inner Join PRACA_CEDENTE On PRACA_CEDENTE.CDE_COD  = DOC_CEDENTE.CDE_COD                    
                         And PRACA_CEDENTE.FIL_COD  = DOC_CEDENTE.FIL_COD
                         And PRACA_CEDENTE.PCAC_COD = DOC_CEDENTE.PCAC_COD                  

 Inner Join CONTA On CONTA.CTB_COD = DUP_CEDENTE.FIL_COD

 Inner Join PERCURSO_RPA on PERCURSO_RPA.RPA_NUM = RPA.RPA_NUM

 INNER JOIN VEICULO a on a.loc_cod = rpa.vei_fil_cod
                      AND a.VEI_COD = rpa.vei_cod
 INNER JOIN VEICULO b ON b.loc_cod = rpa.vei2_fil_cod
                      AND b.VEI_COD = rpa.vei_vei_cod

 inner JOIN TABELA_FRETE ON TABELA_FRETE.tf_cod = RPA.tf_cod

 INNER JOIN CIDADE dest ON dest.CID_COD = RPA.cid_cid_cod
 INNER JOIN CIDADE orig ON orig.CID_COD = RPA.cid_cod

 iNNER JOIN PRACA ON PRACA.fil_cod = dup_cedente.pra_fil_cod

 INNER JOIN CARGA ON CARGA.fil_car = RPA.fil_cod

 INNER JOIN CONTATO ON CONTATO.fil_cod = PRACA.fil_cod

 inner JOIN CADASTRO_GERAL MOTOR ON MOTOR.CG_COD = RPA.cg_mot
                                AND MOTOR.LOC_COD = RPA.loc_mot

 inner JOIN CADASTRO_GERAL PROP ON PROP.CG_COD = RPA.cg_prop
                                AND PROP.LOC_COD = RPa.loc_prop

 INNER JOIN CG_PRACA PROPR ON PROPR.CG_COD = RPA.cg_prop
                           AND PROPR.LOC_COD = RPA.loc_prop

 INNER JOIN CG_PRACA MOTORI ON MOTORI.CG_COD = RPA.cg_mot
                           AND MOTORI.LOC_COD = RPA.loc_mot

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique :

 

Se todos os campos de joins foram informados

Se estes campos tem índices para otimizar a consulta

Não tem nenhuma condição restritiva ? Se quer trazer TODOS OS DADOS realmente ?

----------------

 

 

São 19 joins o que torna a SQL complexa

O DISTINCT só faz evitar os dados duplicados que neste caso não sei se vai ocorrer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.