[firebase-br] Socorro!!! SQL Cartesiano!!
Francisco Thiago
jeandeadlucky em yahoo.com.br
Qua Ago 3 15:52:07 -03 2005
Então.. acontece que eu não posso tirar o Left... pq a pessoa em questão
pode ser uma "Pessoa Física", logo, não terei ela cadastrada em Cad_Juridica
e o meu sql não traria nada...
----- Original Message -----
From: "Giovani Benedetti Penha" <giovani em cooperval.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, August 03, 2005 3:33 PM
Subject: Re: [firebase-br] Socorro!!! SQL Cartesiano!!
> 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
>>
>>
>
> ______________________________________________
> 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
>
_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis.
Instale o discador agora! http://br.acesso.yahoo.com/
Mais detalhes sobre a lista de discussão lista