SUM INNER JOIN
boa noite a todos,
preciso somar as compras do cliente x
estou relacionando à duas tabelas compras e pagamentos
mas nesse caso aqui, só existe compras com id do cliente apenas em na tabela compras..
não esta me retornando a soma das compras
BDFIREBIRD
preciso somar as compras do cliente x
estou relacionando à duas tabelas compras e pagamentos
mas nesse caso aqui, só existe compras com id do cliente apenas em na tabela compras..
não esta me retornando a soma das compras
BDFIREBIRD
Set Rst = New ADODB.Recordset
Sql = [Ô]SELECT C.IDCLIENTE, COALESCE(SUM(C.VLRLANCTO - P.VLRLANCTO), 0) AS TotalDebito FROM TB_CLIENTE_PAGTO P INNER JOIN TB_CLIENTE_COMPR C ON P.IDCLIENTE = C.IDCLIENTE WHERE C.IDCLIENTE =[ô][Ô] & IDCliente & [Ô][ô] GROUP BY C.IDCLIENTE[Ô]
Rst.Open Sql, Cnn, 3
If Rst.RecordCount > 0 Then
LblValorPend.Caption = Format(Rst!TotalDebito, [Ô]###,##0.00[Ô])
End If
Se o ID do cliente só existe em uma tabela, como você vai ligar as duas? Mostre a estrutura delas que vamos pensar em alguma maneira de fazer o que você quer.
CREATE TABLE TB_CLIENTE_COMPR (
ID INTEGER NOT NULL,
IDCLIENTE INTEGER DEFAULT 0,
NOMECLIENTE VARCHAR(150),
VLRLANCTO DM_DINHEIRO DEFAULT 0,
DTLANCTO DM_DATA,
NUMDOCTO VARCHAR(50),
TIPOLANCTO INTEGER,
DT_INC TIMESTAMP DEFAULT current_timestamp,
IDUSER INTEGER,
/* Keys */
CONSTRAINT PK_TB_CLIENTE_COMPR
PRIMARY KEY (ID)
);
CREATE TABLE TB_CLIENTE_PAGTO (
ID INTEGER NOT NULL,
IDCLIENTE INTEGER DEFAULT 0,
NOMECLIENTE VARCHAR(150),
VLRLANCTO DM_DINHEIRO DEFAULT 0,
DTLANCTO DM_DATA,
NUMDOCTO VARCHAR(50),
STATUSLANCTO INTEGER DEFAULT 0,
TIPOLANCTO DM_TXT2 DEFAULT [ô]P[ô],
DT_INC TIMESTAMP DEFAULT current_timestamp,
IDUSER INTEGER DEFAULT 0,
/* Keys */
CONSTRAINT PK_TB_CLIENTE_PAGTO
PRIMARY KEY (ID)
);
Só existe em uma tabela se o cliente fizer apenas compras, não efetuou nem um pagamento..
Hmmm, que tal usar uma sub-query? Vai ser um pouco mais lento, mas mais simples.
WHERE C.IDCLIENTE =[txt-color=#e80000][ô][Ô][/txt-color] & IDCliente &[txt-color=#e80000] [Ô][ô][/txt-color] GROUP BY C.IDCLIENTE[Ô]
O campo idcliente da tabela TB_CLIENTE_COMPR é um numero inteiro e você está usando-o na parte da clausa where como string. Retire as aspas simples e veja se vai. Dessa forma;
WHERE C.IDCLIENTE =[Ô] & IDCliente & [Ô] GROUP BY C.IDCLIENTE[Ô]
nada, já havia retirado antes, e nada!!
Tente:
Select IdCliente, NomeCliente, (select Sum(vlrlancto) from TB_CLIENTE_PAGTO where idcliente = c.idcliente) as Pagamentos from TB_CLIENTE_COMPR c Where....
Tópico encerrado , respostas não são mais permitidas