Somar coluna mysql com left join

3 respostas
razak

Olá a todos.
Sou iniciante em mysql e preciso desenvolver uma aplicação simples de vendas

Explicando:
Tenho 2 tabelas.
1º clientes
idclientes
nome
cpf
data_cadastro

2º movimentacao

datacompra
datacobranca
valor

O relacionamento entre as tabelas esta assim 1:m
um cliente para muitas movimentações.

Preciso fazer um select que retorne:
idcliente, nome, cpf, data_cadastro,datacobrar,DIVIDA

Gostaria de apresentar a soma do valor de todas as compras do cliente, no caso DIVIDA.
E esta soma é que não estou conseguido fazer.

Tentei assim para teste, só para ver se o meu left join funcionaria, como disse sou iniciante.

select idclientes,nome,cpf,data_cadastro,movimentacao.datacobrar,movimentacao.valorcompra from loja.fisica left join movimentacao on fisica.idclientes=movimentacao.clientes_idclientes;

Ai beleza, mas para solucionar meu problema sei que preciso do sum() então tentei assim.

select idclientes,nome,cpf,data_cadastro,movimentacao.datacobrar,
sum(movimentacao.valorcompra) as soma from loja.fisica
left join movimentacao on fisica.idclientes=movimentacao.clientes_idclientes;

select idclientes,nome,cpf,data_cadastro,movimentacao.datacobrar,
sum(movimentacao.valorcompra) from loja.fisica
left join movimentacao on fisica.idclientes=movimentacao.clientes_idclientes;

mas apresenta erro:
Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column ‘loja.fisica.idclientes’; this is incompatible with sql_mode=only_full_group_by

Que besteira estou fazendo?

3 Respostas

javaflex

Faltou o group by. Pesquise e estude sobre funções de agregação.

Exemplo: http://pt.stackoverflow.com/questions/138199/consultar-dados-em-duas-tabelas-e-somar-uma-das-colunas

Estude também no geral sobre banco de dados relacional e SQL.

razak

Valeu meu camarada, vou pesquisar.

razak

Resolvi.
Fiz algumas alterações no banco que não estavam corretas.

Criado 31 de outubro de 2016
Ultima resposta 12 de nov. de 2016
Respostas 3
Participantes 2