[firebase-br] Socorro!!! SQL Cartesiano!!
Giovani Benedetti Penha
giovani em cooperval.com
Qua Ago 3 15:33:05 -03 2005
Tente tirar os left join e colocar inner join... Veja se resolve seu
problema.
[]´s
Giovani Benedetti Penha
Francisco Thiago escreveu:
> Caros amigos,
>
> Tenho um sql que está trazendo 14000 registros quando era pra trazer
> apenas um...
> Acredito que isso acontece pcausa da estrutura adotada. Será que vocês
> poderiam me ajudar a resolver esse SQL?
>
>
> Obrigado
>
> Thiago
>
> ... Select
> select CAD_CONHECIMENTOS.CONH_CODIGO
> , CAD_CONHECIMENTOS.CONH_CONHECIMENTO_N
> , CAD_CONHECIMENTOS.CONH_DATA_EMISSAO
> , CAD_CONHECIMENTOS.CONH_DATA_VENCIMENTO
> , CAD_CONHECIMENTOS.CFOP_CODIGO
> , CAD_CONHECIMENTOS.PESS_CODIGO_REMETENTE
> , CAD_CONHECIMENTOS.PESS_CODIGO_DESTINATARIO
> , CAD_CONHECIMENTOS.PESS_CODIGO_CONSIGNATARIO
> , CAD_CONHECIMENTOS.CONH_CONSIG_FRETE
> , CAD_CONHECIMENTOS.CONH_CONSIG_CALC_ATE
> , CAD_CONHECIMENTOS.PESS_CODIGO_REDESPACHO
> , CAD_CONHECIMENTOS.CONH_PAGO
> , CAD_CONHECIMENTOS.CONH_REDS_CONHECIMENTO_N
> , CAD_CONHECIMENTOS.CONH_REDS_PAGO
> , CAD_CONHECIMENTOS.CONH_REDS_FRETE
> , CAD_CONHECIMENTOS.CONH_NATUREZA
> , CAD_CONHECIMENTOS.VEIC_CODIGO
> , CAD_CONHECIMENTOS.PESS_CODIGO_MOTORISTA
> , CAD_CONHECIMENTOS.CONH_LOCAL_COLETA
> , CAD_CONHECIMENTOS.CONH_LOCAL_ENTREGA
> , CAD_CONHECIMENTOS.CONH_FRETE_COMBINADO
> , CAD_CONHECIMENTOS.CONH_FRETE_PESO_VOL
> , CAD_CONHECIMENTOS.CONH_FRETE_VALOR
> , CAD_CONHECIMENTOS.CONH_SEC_CAT
> , CAD_CONHECIMENTOS.CONH_DESPACHO
> , CAD_CONHECIMENTOS.CONH_TAXA_COLETA
> , CAD_CONHECIMENTOS.CONH_PEDAGIO
> , CAD_CONHECIMENTOS.CONH_OUTROS_VALORES
> , CAD_CONHECIMENTOS.CONH_TOTAL_PRESTACAO
> , CAD_CONHECIMENTOS.CONH_BASE_CALCULO
> , CAD_CONHECIMENTOS.CONH_ALIQUOTA
> , CAD_CONHECIMENTOS.CONH_ICMS
> , CAD_CONHECIMENTOS.CONH_OBS1
> , CAD_CONHECIMENTOS.CONH_OBS2
> , CAD_CONHECIMENTOS.CONH_CANCELADO
> , CAD_CONHECIMENTOS.CONH_GERADO_BOLETO
> , CAD_CONHECIMENTOS.EMPR_CODIGO
> , CAD_CONHECIMENTOS.CUSU_CODIGO
> , CAD_CFOP.CFOP_DESCRICAO
> , CAD_VEICULOS.MVEI_CODIGO
> , CAD_MARCA_VEICULO.MVEI_DESCRICAO
> , CAD_VEICULOS.VEIC_CIDADE
> , CAD_VEICULOS.VEIC_PLACA_UF
> , CAD_VEICULOS.VEIC_PLACA
> , coalesce(REM_J.CJUR_CNPJ,REM_F.CFIS_CPF) as REM_CPF_CPNJ
> , coalesce(REM_J.CJUR_RAZAO_SOCIAL,REM_P.PESS_NOME) as
> REM_RAZAO_SOCIAL
> , REM_E.CEND_ENDERECO as REM_ENDERECO
> , REM_E.CEND_BAIRRO as REM_BAIRRO
> , REM_E.CEND_CIDADE as REM_CIDADE
> , REM_E.CEND_ESTADO as REM_ESTADO
> , REM_P.PESS_CALCULADO_ATE as REM_CALCULADO_ATE
> , REM_P.PESS_TIPO_FATURAMENTO as REM_TIPO_FATURAMENTO
> , coalesce(REM_J.CJUR_CNPJ,DEST_F.CFIS_RG) as DEST_CPF_CPNJ
> , coalesce(DEST_J.CJUR_RAZAO_SOCIAL,DEST_P.PESS_NOME) as
> DEST_RAZAO_SOCIAL
> , DEST_E.CEND_ENDERECO as DEST_ENDERECO
> , DEST_E.CEND_BAIRRO as DEST_BAIRRO
> , DEST_E.CEND_CIDADE as DEST_CIDADE
> , DEST_E.CEND_ESTADO as DEST_ESTADO
> , DEST_P.PESS_CALCULADO_ATE as DEST_CALCULADO_ATE
> , DEST_P.PESS_TIPO_FATURAMENTO as DEST_TIPO_FATURAMENTO
> , coalesce(CONS_J.CJUR_CNPJ,CONS_F.CFIS_CPF) as CONS_CPF_CPNJ
> , coalesce(CONS_J.CJUR_RAZAO_SOCIAL,CONS_P.PESS_NOME) as
> CONS_RAZAO_SOCIAL
> , CONS_E.CEND_ENDERECO as CONS_ENDERECO
> , CONS_E.CEND_BAIRRO as CONS_BAIRRO
> , CONS_E.CEND_CIDADE as CONS_CIDADE
> , CONS_E.CEND_ESTADO as CONS_ESTADO
> , CONS_P.PESS_CALCULADO_ATE as CONS_CALCULADO_ATE
> , CONS_P.PESS_TIPO_FATURAMENTO as CONS_TIPO_FATURAMENTO
> , coalesce(REDS_J.CJUR_CNPJ,REDS_F.CFIS_CPF) as REDS_CPF_CPNJ
> , coalesce(REDS_J.CJUR_RAZAO_SOCIAL,REDS_P.PESS_NOME) as
> REDS_RAZAO_SOCIAL
> , REDS_E.CEND_ENDERECO as REDS_ENDERECO
> , REDS_E.CEND_BAIRRO as REDS_BAIRRO
> , REDS_E.CEND_CIDADE as REDS_CIDADE
> , REDS_E.CEND_ESTADO as REDS_ESTADO
> , REDS_P.PESS_CALCULADO_ATE as REDS_CALCULADO_ATE
> , REDS_P.PESS_TIPO_FATURAMENTO as REDS_TIPO_FATURAMENTO
> , coalesce(MOT_J.CJUR_RAZAO_SOCIAL,MOT_P.PESS_NOME) as
> MOT_CJUR_RAZAO_SOCIAL
> from CAD_CONHECIMENTOS
> left join CAD_CFOP on CAD_CFOP.CFOP_CODIGO =
> CAD_CONHECIMENTOS.CFOP_CODIGO
> left join CAD_VEICULOS on CAD_VEICULOS.VEIC_CODIGO =
> CAD_CONHECIMENTOS.VEIC_CODIGO
> left join CAD_MARCA_VEICULO on CAD_MARCA_VEICULO.MVEI_CODIGO =
> CAD_VEICULOS.MVEI_CODIGO
> inner join CAD_PESSOA MOT_P on MOT_P.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_MOTORISTA
> left join CAD_JURIDICA MOT_J on MOT_J.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_MOTORISTA
> left join CAD_PESSOA REM_P on REM_P.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REMETENTE
> left join CAD_ENDERECO REM_E on REM_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REMETENTE and REM_E.cend_cobranca = 'T'
> left join CAD_JURIDICA REM_J on REM_J.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REMETENTE
> left join CAD_FISICA REM_F on REM_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REMETENTE and REM_J.cjur_codigo IS NULL
> left join CAD_PESSOA DEST_P on DEST_P.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_DESTINATARIO
> left join CAD_ENDERECO DEST_E on DEST_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_DESTINATARIO and DEST_E.cend_cobranca = 'T'
> left join CAD_JURIDICA DEST_J on DEST_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_DESTINATARIO
> left join CAD_FISICA DEST_F on DEST_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_DESTINATARIO AND dest_j.cjur_codigo is null
> left join CAD_PESSOA CONS_P on CONS_P.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_CONSIGNATARIO
> left join CAD_ENDERECO CONS_E on CONS_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_CONSIGNATARIO and CONS_E.cend_cobranca =
> 'T'
> left join CAD_JURIDICA CONS_J on CONS_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_CONSIGNATARIO
> left join CAD_FISICA CONS_F on CONS_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_CONSIGNATARIO and cons_j.cjur_codigo is
> null
> left join CAD_PESSOA REDS_P on REDS_P.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REDESPACHO
> left join CAD_ENDERECO REDS_E on REDS_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REDESPACHO and REDS_E.cend_cobranca = 'T'
> left join CAD_JURIDICA REDS_J on REDS_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REDESPACHO
> left join CAD_FISICA REDS_F on REDS_E.PESS_CODIGO =
> CAD_CONHECIMENTOS.PESS_CODIGO_REDESPACHO and reds_j.cjur_codigo is null
> where CAD_CONHECIMENTOS.CONH_CODIGO = :CONH_CODIGO
>
> Tabelas:
>
> 1- De acordo com a Pessoa (Física/Jurídica) eu tenho um registro
> apenas em Cad_Física OU (exclusivo) Jurídica.
> 2- Posso ter vários enderecos, porém apenas um poderá ser o de
> cobrança (cobranca = 'T')
>
> CREATE TABLE CAD_PESSOA (
> PESS_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> PESS_NOME D_NOME NOT NULL /* D_NOME = VARCHAR(50) */,
> PESS_EMAIL D_MAIL /* D_MAIL = VARCHAR(50) CHECK ((VALUE
> like ('%@%') and Value like ('%.%') or (Value is null))) */,
> PESS_SITE D_NOME /* D_NOME = VARCHAR(50) */,
> PESS_DATA_CADASTRO DATE NOT NULL,
> PESS_TIPO_PESSOA D_INTEIRO DEFAULT 3 NOT NULL /* D_INTEIRO =
> INTEGER */,
> PESS_FISICA_JURIDICA D_PBOOLEAN NOT NULL /* D_PBOOLEAN = CHAR(1)
> DEFAULT 'F' CHECK ((VALUE = 'T') OR (VALUE = 'F')) */,
> PESS_TIPO_FATURAMENTO D_INTEIRO DEFAULT 1 /* D_INTEIRO = INTEGER */,
> PESS_BLOQUEADO D_PBOOLEAN DEFAULT 'F' NOT NULL /*
> D_PBOOLEAN = CHAR(1) DEFAULT 'F' CHECK ((VALUE = 'T') OR (VALUE =
> 'F')) */,
> PESS_CONTR_ICMS D_PBOOLEAN DEFAULT 'T' NOT NULL /*
> D_PBOOLEAN = CHAR(1) DEFAULT 'F' CHECK ((VALUE = 'T') OR (VALUE =
> 'F')) */,
> PESS_CALCULADO_ATE D_NOME /* D_NOME = VARCHAR(50) */,
> PESS_OBS D_OBS /* D_OBS = VARCHAR(200) */,
> PESS_TELEFONE1 D_FONE /* D_FONE = CHAR(12) */,
> PESS_TELEFONE2 D_FONE /* D_FONE = CHAR(12) */,
> PESS_TELEFONE3 D_FONE /* D_FONE = CHAR(12) */,
> EMPR_CODIGO D_INTEIRO DEFAULT 1 NOT NULL /* D_INTEIRO =
> INTEGER */
> );
>
> CREATE TABLE CAD_FISICA (
> CFIS_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> PESS_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> CFIS_RG D_RG NOT NULL /* D_RG = VARCHAR(20) */,
> CFIS_CPF D_CPF NOT NULL /* D_CPF = CHAR(11) NOT NULL */,
> CFIS_DATANASCIMENTO DATE
> );
>
> CREATE TABLE CAD_JURIDICA (
> CJUR_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> PESS_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> CJUR_INSCEST D_RG NOT NULL /* D_RG = VARCHAR(20) */,
> CJUR_CNPJ D_DOCUMENTOS NOT NULL /* D_DOCUMENTOS = CHAR(14)
> */,
> CJUR_RAZAO_SOCIAL D_NOME NOT NULL COLLATE PXW_INTL850 /* D_NOME =
> VARCHAR(50) */
> );
>
> CREATE TABLE CAD_ENDERECO (
> CEND_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> PESS_CODIGO D_INTEIRO NOT NULL /* D_INTEIRO = INTEGER */,
> CEND_ENDERECO D_ENDERECO NOT NULL /* D_ENDERECO = VARCHAR(100) */,
> CEND_BAIRRO D_NOME NOT NULL /* D_NOME = VARCHAR(50) */,
> CEND_CIDADE D_CIDADE NOT NULL /* D_CIDADE = VARCHAR(100) */,
> CEND_ESTADO D_UF NOT NULL /* D_UF = CHAR(2) */,
> CEND_CEP D_CEP NOT NULL /* D_CEP = CHAR(8) */,
> CEND_COBRANCA D_PBOOLEAN default 'T' NOT NULL /* D_PBOOLEAN =
> CHAR(1) DEFAULT 'F' CHECK ((VALUE = 'T') OR (VALUE = 'F')) */
> );
>
>
>
>
>
> _______________________________________________________ Yahoo! Acesso
> Grátis - Internet rápida e grátis. Instale o discador agora!
> http://br.acesso.yahoo.com/
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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
>
>
Mais detalhes sobre a lista de discussão lista