Consulta sql com somatorio

Bom dia a todos.

Vim pedir mais uma vez ajuda de todos.

Estou com a seguinte dúvida:

Tem trêz tabelas no mysql.

Cliente (idCli,Nome);
Financeiro (idFin,nroCons,ValorCons,ValorPago,TotalCons)
TotalDia (idTotalDia,data,TotalDia)

eu preciso fazer o seguinte: listar todos os clientes que pagaram qualquer valor em uma determinada data e seu total por mes.

Ex 1.: Fulano 50,00 21/07/2010
Ciclano 50,00 21/07/2010
total = 100,00

um outro exemplo eu teria um mesmo cliente pago no mesmo dia dois valores diferentes tipo 30,00 e 50,00 (queria somar esses dois valores e mostrar somente um nome de cliente).

Ex 2.: Fulano 80,00 21/07/2010
Ciclano 100,00 21/07/2010
total = 180,00

Desde já agradeço.

usar o SUM na sua query sql deve resolver, ou não?

Bom dia wlademirfl,

Vc teria que usar a solução que nosso amigo MARKIN disse mas, como você sabe qual cliente pagou,qto e qdo; se não há nenhuma chave estrangeira entre as tabelas?

resolve só para o primeiro exemplo que mostrei ai em cima. eu precisava mais para o segundo. mas olha como eu fiz posso estar enganado:

SELECT c.Nome as Nome, t.data, SUM(t.TotalDia) AS 'Total', t.TotalDia AS 'ValorPago'
FROM totalDia t,financeiro f, cliente c 
WHERE c.idCliente = f.idCliente
AND t.idTotalDia = f.idTotalDia
GROUP BY t.data,c.Nome

wlademirfl,

Seria algo mais ou menos assim:

SELECT SUM(F.VALOR)
FROM CLIENTE C, FINANCEIRO F,TOTALDIA T
WHERE C.IDCLIENTE = F.IDCLIENTE AND
F.IDFINANCEIRO = T.IDFINANCEIRO
AND C.IDCLIENTE = ?
AND T.DATA = ?;

Espero ter ajudado

[quote=dsystem]wlademirfl,

Seria algo mais ou menos assim:

SELECT SUM(F.VALOR)
FROM CLIENTE C, FINANCEIRO F,TOTALDIA T
WHERE C.IDCLIENTE = F.IDCLIENTE AND
F.IDFINANCEIRO = T.IDFINANCEIRO
AND C.IDCLIENTE = ?
AND T.DATA = ?;

Espero ter ajudado[/quote]

então vc acha melhor colocar na tabela financeiro como chave estrajeira o id da tabela Totadia? ou ao contrário?

Essa tabela TotalDia serve pra que?

para cadastrar vários dias e vários valores pagos

ex.: fulano pagou 50,00 no dia 10/07 o mesmo fulano pagou mais 30,00 no dia 10/07 e também pagou 100,00 no dia 21/07

E pq vc nao deixa essas informações dentro de financeiro?

a idéia principal é a seguinte: ter um cadastro financeiro onde tenho o nro de parcelas, o valor da parcela, total dos valores das parcelas, o valor pago, o dia que pagou e o valor que está em aberto. os cálculos eu ja consegui. o que na verdade um preciso fazer é listar nesse modelo:

          Mês:  

Nome Valor Pago dia

Total:

Eu sugiro você rever a modelagem.

wlademirfl,

Desculpa mas, acho que até você mesmo está confuso sobre aquilo que necessita.

O que eu aconselho você a fazer é montar um Modelo de Relacionamento pra você entender o que precisa e em cima disso você faz os teus códigos.

Outra dica é você da uma estudada em SQL básico, pois tem questões que você tem dúvida são coisas básicas.

Pega no “tio google” e dá uma estudada. Monta umas tabelas e vai treinando.

E tenta enxugar o maximo de informação possível!

obrigado a todos pelas dicas, vou repassar modelagem do meu BD.

wlademirfl,

Não vejo que sua modelagem esteja errada, porém, está mais trabalhosa do que deveria.
A sugestão dos nossos amigos é valida, pois, poderia aumentar o desempenho.

Hoje você tem essas tabelas:
Cliente (idCli,Nome);
Financeiro (idFin,nroCons,ValorCons,ValorPago,TotalCons)
TotalDia (idTotalDia,data,TotalDia)

Creio que uma sugestão válida seria juntar as duas tabelas Financeiro e TotalDia, ficando com:

Cliente (idCli,Nome);
Financeiro (idFin,nroCons,ValorCons,ValorPago,TotalCons,data)

Com isso você já tem o ValorPago, que se referenciaria a data do pagamento, ai para você obter os dados necessários para gerar o seu relatório seria somente fazer um sum simples para obter esse valor. Se por ventura pudesse haver mais de um pagamento por dia, poderia colocar um número sequencial para garantir a unicidade da chave primária.
Sua chave primária deveria ser idFin, nroCons e data, ficaria mais ou menos um uma estrutura como abaixo:

idFin nroCons ValorCons ValorPago TotalCons data
1 1 1000 0 1000,00 07/07/2010
1 1 1000 100,00 900,00 08/07/2010
1 1 1000 200,00 700,00 09/07/2010

Espero que seja mais ou menos isso.

Abraço.

[quote=biguera]wlademirfl,

Não vejo que sua modelagem esteja errada, porém, está mais trabalhosa do que deveria.
A sugestão dos nossos amigos é valida, pois, poderia aumentar o desempenho.

Hoje você tem essas tabelas:
Cliente (idCli,Nome);
Financeiro (idFin,nroCons,ValorCons,ValorPago,TotalCons)
TotalDia (idTotalDia,data,TotalDia)

Creio que uma sugestão válida seria juntar as duas tabelas Financeiro e TotalDia, ficando com:

Cliente (idCli,Nome);
Financeiro (idFin,nroCons,ValorCons,ValorPago,TotalCons,data)

Com isso você já tem o ValorPago, que se referenciaria a data do pagamento, ai para você obter os dados necessários para gerar o seu relatório seria somente fazer um sum simples para obter esse valor. Se por ventura pudesse haver mais de um pagamento por dia, poderia colocar um número sequencial para garantir a unicidade da chave primária.
Sua chave primária deveria ser idFin, nroCons e data, ficaria mais ou menos um uma estrutura como abaixo:

idFin nroCons ValorCons ValorPago TotalCons data
1 1 1000 0 1000,00 07/07/2010
1 1 1000 100,00 900,00 08/07/2010
1 1 1000 200,00 700,00 09/07/2010

Espero que seja mais ou menos isso.

Abraço.[/quote]

muito obrigado pelas explicações. vou fazer essas modificações qualquer coisa eu envio o resultado se deu certo ou não.
abrços
Wlademir