Utilizando HEAVING, ele reclama do campo VALOR_PAGO

select a.CDPEDIDO, a.VALOR, (select coalesce(sum(b.ValorPgto) , 0)
from BDpagamentos b where b.cdpedido = a.cdpedido)  VALOR_PAGO
from BDpedidos a
group by a.CDpedido, a.Valor
HAVING A.VALOR <> VALOR_PAGO

Retirando Group by e heavin, funciona que é uma beleza, mais traz tbm todos
os registros pagos integralmente.

Estou fazendo diversos testes utilizando o IBexpert em uma base INTERBASE
6.5

-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br]em
nome de José Roberto Marque
Enviada em: quarta-feira, 1 de abril de 2009 08:37
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: RES: [delphi-br] Ajuca com SQL


Complicado, hein, Vinicius.

  Será que não é o HAVING ? Porque o LEFT OUTER JOIN vai retornar nulo se o
registro não existir.  A dúvida que fica é como o HAVING trataria isso ...

--- Em qua, 1/4/09, Vinicius da Silva Pinto <vinic...@cnen.gov.br> escreveu:

De: Vinicius da Silva Pinto <vinic...@cnen.gov.br>
Assunto: RES: [delphi-br] Ajuca com SQL
Para: delphi-br@yahoogrupos.com.br
Data: Quarta-feira, 1 de Abril de 2009, 7:56












            Grande Jose, olha, o resultado foi o mesmo, todas as duas opções
(a minha e

a sua com left outer join) deram o mesmo resultado.

estou fazendo teste com coalesce...



Vinicius



Tenta assim :



 SELECT A.CDPEDIDO, A.DATAEVENTO, A.VALOR, SUM( G.VALORPAGTO )

 FROM BDPEDIDOS A LEFT OUTER JOIN BDPAGAMENTOS G ON A.CDPEDIDO = G.CDPEDIDO

 WHERE A.DATAEVENTO <= '01/04/2009'



GROUP BY CDPEDIDO, DATAEVENTO, VALOR



HAVING SUM(G.ValorPgto) < A.valor



Entendeu ?



Vê se funciona.

--- Em sex, 27/3/09, Vinicius da Silva Pinto <vinic...@cnen. gov.br>

escreveu:



De: Vinicius da Silva Pinto <vinic...@cnen. gov.br>

Assunto: [delphi-br] Ajuca com SQL

Para: delphi...@yahoogrup os.com.br

Data: Sexta-feira, 27 de Março de 2009, 15:33



Ve se alguem pode me ajudar, já quebrei a cabeça e não obtive o

resultado

satisfatório.



São duas tabelas, bem simples uma com os dados de um pedido com codigo,

nome...e ValorTotal.



Na outra tabela, a de pagamentos, só tem registro quando o cliente paga,

pode ser a vista ou parcelado.



As duas tabelas são unidas pelo campo CDpedido

O que eu quero é o seguinte... um relação de todos os pedidos que ainda não

pagaram o valor total.



Fiz a seguinte query:



SELECT A.CDPEDIDO, A.dataevento, A.valor AS VALORTOTAL, SUM(G.ValorPgto) AS

TOTALPAGO

FROM BDpedidos A, BDpagamentos G

WHERE G.CDpedido = A.CDpedido AND A.DATAEVENTO <= '01/04/2009'

GROUP BY CDPEDIDO, DATAEVENTO, VALOR

HAVING SUM(G.ValorPgto) < A.valor



Funciona, só que só aparecem os pedidos que já tiveram algum pagamento, os

registros que estão na

tabela principal que ainda não tiveram nenhum pagamento, não sai...



Pergunta.... . como faço para aparecer tbm os registros que não tiveram



pagamento.



Agradeço qualquer ajuda ou dica.



Vinicius



Veja quais são os assuntos do momento no Yahoo! +Buscados

http://br.maisbusca dos.yahoo. com



[As partes desta mensagem que não continham texto foram removidas]



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



--

<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>





























      Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]



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

--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>





Responder a