[firebase-br] Select retornando registro errado

Carlos Vitorino vitorino em ctvoicer.com.br
Sex Mar 11 15:46:37 -03 2005


na condição where não seria where MF.VrDebito <>  (select Sum(MF2.VrCredito) 
from MovFinanc MF2 ...  ?

Então seria só verificar se MF.Numero ou MF.NumDoc são nulos, se forem, o 
sql interno sempre será Nulo, ou alterar a condição do sql interno para:

(MF2.Numero = MF.Numero or MF.Numero is null)
AND (MF2.NumDoc = MF.NumDoc or MF.Numero is null)

[]'s

Carlos Vitorino



----- Original Message ----- 
From: "Pha-Lista" <lista em pha.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Friday, March 11, 2005 2:26 PM
Subject: Re: [firebase-br] Select retornando registro errado


> Mais ou menos,
>
>>
>> Então o externo retorna todas as contas que tem valor débito, e vai u> 
>> sar os
>> seus valores como parametro para o interno.
>
> Isso e feito a cada registro do Select externo, como o Eduardo disse.
>
>> Se um dos registros que ele usa na comparação for nula, ela não fun> 
>> ciona, no
>> caso se não me engano o campo NUMDOC é nulo, então o resultado do s> ql
>> interno sempre vai ser nulo.
>
> Funciona como um Select normal, com a excecao que você pode utilizar os 
> campos do Select externo, se a condicao where nao satisfazer nenhum 
> registro, sera retonado um select vazio, e False para o operador Exists, 
> nao nencessariamente precisaria ser utilizado exists, poderria com para um 
> campo de retorno.
>
> Exemplo:
>
> Select MF.Numero, MF.NumDoc, MF.NumParcela, MF.VrDeb, MF.Data,
> MF.DtVenc, MF.CodCli, C.Nome, C.Cidade, C.ContaCtb
> from MovFinanc MF
> Left Outer Join Cliente C on C.Codigo = MF.CodCli
>
> where MF2.VrDebito <>  (select Sum(MF2.VrCredito) from MovFinanc MF2
>     where  MF2.Numero = MF.Numero
>         and MF2.NumDoc = MF.NumDoc
>         and MF2.NumParcela = MF.NumParcela
>         and MF2.CodCli = MF.CodCli
>         and MF2.VrCredito is not Null)
>
>   and MF.Data <= '01/31/2005' and MF.VrDeb is not Null
>    and MF.CodCli = 1640
>
>
> PHA
> Nova Odessa / SP - Brazil
> -----Mensagem original-----
> From: "Carlos Vitorino" vitorino em ctvoicer.com.br
> Date: Fri, 11 Mar 2005 13:59:54 -0300
> To: "FireBase" lista em firebase.com.br
> Subject: Re: [firebase-br] Select retornando registro errado
>
>>
>> Então o externo retorna todas as contas que tem valor débito, e vai u> 
>> sar os
>> seus valores como parametro para o interno.
>> Se um dos registros que ele usa na comparação for nula, ela não fun> 
>> ciona, no
>> caso se não me engano o campo NUMDOC é nulo, então o resultado do s> ql
>> interno sempre vai ser nulo.
>>
>> To certo??
>>
>> []'s
>>
>> Carlos Vitorino
>>
>>
>> ----- Original Message ----- 
>> From: "Eduardo Jedliczka" <eduardo em gerasoft.com.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Friday, March 11, 2005 1:43 PM
>> Subject: Re: [firebase-br] Select retornando registro errado
>>
>>
>> Para cada registro do select externo, o Banco executa o Sub-Select... Ou
>> seja, funciona!
>>
>> [s]
>>
>> =========================> =
>> Eduardo Jedliczka
>> Gerasoft Informática
>> Apucarana - Pr
>> =========================> =
>>
>> ----- Original Message ----- 
>> From: "Carlos Vitorino" <vitorino em ctvoicer.com.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Friday, March 11, 2005 1:38 PM
>> Subject: Re: [firebase-br] Select retornando registro errado
>>
>>
>> Olá
>>
>> Eu tenho uma dúvida,
>>
>> O select interno não vai retornar sempre nulo?
>> Em que ordem o Firebird vai resolver as querys? Ele não vai verifcar a
>> cláusula mais externa primeiro e para cada registro que ele retornar el> 
>> e usa
>> como parametro para o mais interno, seria isso?
>>
>> []'s
>>
>> Carlos Vitorino
>>
>>
>> ----- Original Message ----- 
>> From: "Carvalho" <carvalho em invitro.com.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Friday, March 11, 2005 10:29 AM
>> Subject: Re: [firebase-br] Select retornando registro errado
>>
>>
>> > Caro Antônio Carlos,
>> >
>> > O Select que estou tentando execuar é este:
>> > Select MF.Numero, MF.NumDoc, MF.NumParcela, MF.VrDeb, MF.Data,
>> >  MF.DtVenc, MF.CodCli, C.Nome, C.Cidade, C.ContaCtb
>> >  from MovFinanc MF
>> > Left Outer Join Cliente C on C.Codigo = MF.CodCli
>> > where not exists
>> >    (select 1 from MovFinanc MF2
>> >     where  MF2.Numero = MF.Numero
>> >         and MF2.NumDoc = MF.NumDoc
>> >         and MF2.NumParcela = MF.NumParcela
>> >         and MF2.CodCli = MF.CodCli
>> >         and MF2.VrCredito is not Null )
>> >
>> >    and MF.Data <= '01/31/2005' and MF.VrDeb is not Null
>> >    and MF.CodCli = 1640
>> >
>> > Order by C.Nome
>> >
>> > Eu vou testar a sua sugestão também.
>> >
>> > Obrigado
>> >
>> >
>> >> Li o rodape do email e lá o seu select é completamente diferente d> o
>> >> último
>> >> postado, será que vc não esqueceu de passar maiores informaçõe> s ?
>> >>
>> >> Tenho uma sugestão :
>> >>
>> >> Por exemplo se vc ao inves de criar um registro NOVO para o crédito,
>> >> alterasse o de debito seria mais fácil pois bastaria um
>> >>
>> >> Select MF.Numero, MF.NumDoc, MF.NumParcela, MF.VrDeb, MF.Data, 
>> >> MF.DtVe> nc,
>> >> MF.CodCli, C.Nome, C.Cidade, C.ContaCtb
>> >> from MovFinanc MF ,  Cliente C
>> >> WHERE  C.Codigo = MF.CodCli
>> >> and MF.VrCredito IS Null
>> >> and MF.Data <= '01/31/2005'
>> >> and MF.CodCli = 1640
>> >> Order by C.Nome
>> >>
>> >> Analisando o Select original, creio que o erro seja porque mesmo que 
>> >> v> oce
>> >> tenha um lancamento de crédito,
>> >> sempre vai haver um de debito com o CAMPO crédito nulo.
>> >>
>> >> Antonio Carlos
>> >>
>> >>
>> >>
>> >> ----- Original Message -----
>> >> From: "Carvalho" <carvalho em invitro.com.br>
>> >> To: "FireBase" <lista em firebase.com.br>
>> >> Sent: Friday, March 11, 2005 9:40 AM
>> >> Subject: Re: [firebase-br] Select retornando registro errado
>> >>
>> >>
>> >> > Caro Eduardo,
>> >> >
>> >> > Quando eu executo assim:
>> >> >
>> >> > Select MF.Numero, MF.NUMParcela, MF.NumDoc, MF.VrCred, MF.VrDeb,
>> > mf.cODCLI
>> >> > from MovFinanc MF
>> >> > Where MF.CODCLI = 1640 and MF.Numero = 49201
>> >> >
>> >> > o retorno vem assim:
>> >> >
>> >> > NUMERO NUMPARCELA NUMDOC VRCRED    VRDEB   CODCLI
>> >> > 49201                    1                049201       null
>> >> > 490,80    1640
>> >> >
>> >> > Quando eu executo assim:
>> >> >
>> >> > Select MF.Numero, MF.NUMParcela, MF.NumDoc, MF.VrCred, MF.VrDeb,
>> > mf.cODCLI
>> >> > from MovFinanc MF
>> >> > Where MF.Numero = 49201
>> >> >
>> >> > o retorno vem assim:
>> >> >
>> >> > NUMERO NUMPARCELA NUMDOC VRCRED    VRDEB   CODCLI
>> >> > 49201                    1                049201       null
>> >> > 490,80    1640
>> >> > 49201                    1                049201        490,80
>> > null
>> >> > 1640
>> >> >
>> >> > Muito louco... :-(((
>> >> >
>> >> > ----- Original Message -----
>> >> > From: "Eduardo Jedliczka" <eduardo em gerasoft.com.br>
>> >> > To: "FireBase" <lista em firebase.com.br>
>> >> > Sent: Friday, March 11, 2005 8:35 AM
>> >> > Subject: Re: [firebase-br] Select retornando registro errado
>> >> >
>> >> >
>> >> > Me ocorreu mais uma coisa...
>> >> >
>> >> > Qual o retorno no select abaixo (por favor, coloque sem cortes) ???
>> >> >
>> >> > Select MF.Numero, MF.Parcela, MF.NumDoc, MF.VrCredito, MF.VrDebito
>> >> > >>From MovFinanc MF
>> >> > Where MF.Cliente = 1640 and Numero = 49201 and Parcela = 1
>> >> >
>> >> > [s]
>> >> >
>> >> > =======================> ===
>> >> > Eduardo Jedliczka
>> >> > Gerasoft Informática
>> >> > Apucarana - Pr
>> >> > =======================> ===
>> >> >
>> >> > ----- Original Message -----
>> >> > From: "Carvalho" <carvalho em invitro.com.br>
>> >> > To: "FireBase" <lista em firebase.com.br>
>> >> > Sent: Friday, March 11, 2005 8:32 AM
>> >> > Subject: [firebase-br] Select retornando registro errado
>> >> >
>> >> >
>> >> > > In Vitro Diagnóstica S/AColegas,
>> >> > >
>> >> > > Eu não sei mais o que testar...
>> >> > >
>> >> > > O select abaixo não está funcionando.
>> >> > >
>> >> > > Select MF.Numero, MF.NumDoc, MF.NumParcela, MF.VrDeb, MF.Data,
>> >> > >  MF.DtVenc, MF.CodCli, C.Nome, C.Cidade, C.ContaCtb
>> >> > >  from MovFinanc MF
>> >> > > Left Outer Join Cliente C on C.Codigo = MF.CodCli
>> >> > > where not exists
>> >> > >    (select 1 from MovFinanc MF2
>> >> > >     where  MF2.Numero = MF.Numero
>> >> > >         and MF2.NumDoc = MF.NumDoc
>> >> > >         and MF2.NumParcela = MF.NumParcela
>> >> > >         and MF2.CodCli = MF.CodCli
>> >> > >         and MF2.VrCredito is not Null )   <-- AQUI
>> >> > >
>> >> > >    and MF.Data <= '01/31/2005' and MF.VrDeb is not Null
>> >> > >    and MF.CodCli = 1640
>> >> > >
>> >> > > Order by C.Nome
>> >> > >
>> >> > > A consulta está me retornando o seguinte registro:
>> >> > >
>> >> > > DtEmissao    Cliente   VrDebito   VrCredito  Vencimento   Numero
>> > Parcela
>> >> > > 16/12/2004    1640      490,80                      14/01/2005
>> > 49201
>> >> > 1
>> >> > >
>> >> > > A tabela está assim:
>> >> > >
>> >> > > DtEmissao   Cliente  VrDebito  VrCredito   Vencimento  Numero 
>> >> > > Parc> ela
>> >> > > 16/12/2004  1640       490,80                    14/01/2005 
>> >> > > 4920> 1
>> > 1
>> >> > > 16/12/2004  1640                       490,80    20/01/2005 
>> >> > > 4920> 1
>> > 1
>> >> > >
>> >> > > Eu não quero que retorna nada.
>> >> > >
>> >> > > Somente quando houver Débitos sem Créditos, ou seja:
>> >> > >
>> >> > > DtEmissao    Cliente   VrDebito   VrCredito  Vencimento   Numero
>> > Parcela
>> >> > > 15/02/2005    1640      525,28                      20/03/2005
>> > 49262
>> >> > 1
>> >> > >
>> >> > > Detalhe utilizo Interbase 6 com IBX
>> >> > >
>> >> > > O que fazer?
>> >> > >
>> >> > > Obrigado
>> >> > >
>> >> > >
>> >> > >
>> >> > >
>> >> > >
>> >> >
>> >> >
>> >>
>> >> ----------------------------------------------------------------------> 
>> >>  ---
>> -
>> >> --
>> >> > ----
>> >> >
>> >> >
>> >> > ______________________________________________
>> >> > 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
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >> ----------------------------------------------------------------------> 
>> >>  ---
>> -
>> >> --
>> >> > ----
>> >> >
>> >> >
>> >> > ______________________________________________
>> >> > 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
>> >> >
>> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >> ----------------------------------------------------------------------> 
>> >>  ---
>> -
>> > --
>> >> ----
>> >>
>> >>
>> >> ______________________________________________
>> >> 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
>> >>
>> >>
>> >>
>> >
>> >
>> > -----------------------------------------------------------------------> 
>> >  ---
>> --
>> > ----
>> >
>> >
>> > ______________________________________________
>> > 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
>> >
>> >
>> >
>> >
>> >
>>
>>
>> -------------------------------------------------------------------------> 
>>  ---
>> ----
>>
>>
>> ______________________________________________
>> 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
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------> 
>>  ---
>> ----
>>
>>
>> ______________________________________________
>> 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
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------> 
>>  -------
>>
>>
>> ______________________________________________
>> 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
>>
>>
>>
>
>
>


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


______________________________________________
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 





Mais detalhes sobre a lista de discussão lista