[firebase-br] INNER JOIN X NOT EXIST

Eduardo Jedliczka edujed em gmail.com
Ter Jan 5 13:49:44 -03 2010


como você não deu maiores detalhes, vou apresentar uma solução que talvez
funcione (mas pode demorar algumas horas pra rodar se cobranças e/ou
Prestações tiverem mais de 10 milhões de registros) sem usar o NOT EXISTS.

SELECT
 C.CPF_CNPJ,C.NOME,C.NUM_
CARTAO,MIN(P.DTVENC) AS MENORDATA,
 SUM(P.VLRPREST) AS SOMA,COUNT(P.CPF_CNPJ) AS TOTAL,C.ENDER,
 C.BAIRRO,C.CIDADE,C.UF,C.CEP
FROM CLIENTES C INNER JOIN PRESTACOES P ON (C.CPF_CNPJ = P.CPF_CNPJ)
 AND (P.DTPAGTO IS NULL) AND (P.DTVENC < CURRENT_TIMESTAMP)

  LEFT JOIN COBRANCAS CO ON (CO.CODLOJA = P.CODLOJA)
 AND (CO.NUMREF = P.NUMREF) AND (CO.NUMPREST = P.NUMPREST)
 AND (CO.TIPO_COBRANCA in (1))

WHERE (CO.CODLOJA IS NULL) and  P.DTVENC >= '10/1/2009' AND P.DTVENC <=
'10/15/2009'
GROUP BY C.CPF_CNPJ,C.NOME,C.NUM_CARTAO,C.ENDER,C.BAIRRO,C.CIDADE,C.UF,C.CEP

Como disse no e-mail anterior, sugiro que reveja a sua lógica/modelagem
(aposto que ela está errada).

Abraço

Eduardo

2010/1/5 ericrodrigues <ericrodrigues1509 em gmail.com>

> vou tentar simplificar... a unica coisa que preciso e que na query, o INNER
> JOIN COBRANCAS funcione como um not exist
>
>
> "Eduardo Jedliczka" <edujed em gmail.com>
> escreveu na mensagem
> news:82a1441001050509l32d19b21k149edae27b4e589e em mail.gmail.com...
> ericrodrigues, suas informações são insuficientes para que alguém consiga
> lhe ajudar de uma forma realmente eficaz.
>
> Sua modelagem não foi explicitada e nem qual é o papel das tabelas
> Prestacoes / Cobranças.
>
> Como também não sabemos a versão do Firebird (1.0, 2.1, 2.5 RC) não dá para
> sugerir algo performático.
>
> Mas tente quebrar sua lógica e estude um pouco sobre o Execute Block.
> (http://www.firebirdsql.org/refdocs/langrefupd20-execblock.html)
>
> Abraço
>
> Eduardo
>
> 2010/1/5 ericrodrigues
> <ericrodrigues1509 em gmail.com>
>
> > Olá pessoal...
> >
> > estou com uma query aqui que eu estava usando not exist so que por causa
> > da
> > subquery estava ficando muito lento... ja cheguei esperar 1hr para os
> > resultados
> > por isso estou tentando usar o inner join pra resolver isso... no
> exemplo,
> > estou buscando se encontrar na tabela COBRANCAS... mas se eu quizer
> buscar
> > somente o que eu não encontrar???
> >
> > segue a query:
> >
> > SELECT
> >  C.CPF_CNPJ,C.NOME,C.NUM_CARTAO,MIN(P.DTVENC) AS MENORDATA,
> >  SUM(P.VLRPREST) AS SOMA,COUNT(P.CPF_CNPJ) AS TOTAL,C.ENDER,
> >  C.BAIRRO,C.CIDADE,C.UF,C.CEP
> > FROM CLIENTES C INNER JOIN PRESTACOES P ON (C.CPF_CNPJ = P.CPF_CNPJ)
> >  AND (P.DTPAGTO IS NULL) AND (P.DTVENC < CURRENT_TIMESTAMP)
> >
> >  INNER JOIN COBRANCAS CO ON (CO.CODLOJA = P.CODLOJA)                \
> >  AND (CO.NUMREF = P.NUMREF) AND (CO.NUMPREST = P.NUMPREST)    > O
> problema
> > esta aqui!!!
> >  AND (CO.TIPO_COBRANCA in (1))
> > /
> >
> > WHERE P.DTVENC >= '10/1/2009' AND P.DTVENC <= '10/15/2009'
> > GROUP BY
> > C.CPF_CNPJ,C.NOME,C.NUM_CARTAO,C.ENDER,C.BAIRRO,C.CIDADE,C.UF,C.CEP
> >
> >
> >
> >
> >
> > ______________________________________________
> > 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
> >
>
>
>
> --
> [s]
>
> ==========================
> Eduardo Jedliczka
> Apucarana - Pr
> ==========================
> ______________________________________________
> 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
>



-- 
[s]

==========================
Eduardo Jedliczka
Apucarana - Pr
==========================



Mais detalhes sobre a lista de discussão lista