Boa noite.
Estou tentando fazer um comando de select para mostrar o cliente e o valor total de todas as compras para isso estou multiplicando a quantidade de itens que ele comprou pelo valor do produto e somando o resultado caso o cliente tenha várias ocorrências, já que o mesmo cliente pode realizar várias compras. O problema é que o código está somando o valor de todos os clientes.
A tabela venda importa o id do cliente e do produto:
[code]create table cliente (
id_cliente smallint unsigned auto_increment,
nome varchar(40),
endereco char(100),
telefone char(13),
cidade char(30),
primary key (id_cliente)
);
create table produto (
id_produto smallint unsigned auto_increment,
nome varchar(40),
preco real,
quantidade int,
primary key (id_produto)
);
create table venda (
id_venda smallint unsigned auto_increment,
id_cliente smallint unsigned,
id_produto smallint unsigned,
id_vendedor smallint unsigned,
quantidade_itens int,
numero_parcelas int,
data_venda timestamp default current_timestamp,
primary key (id_venda),
foreign key (id_cliente)
references cliente (id_cliente),
foreign key (id_produto)
references produto (id_produto),
foreign key (id_vendedor)
references vendedor (id_vendedor)
);[/code]A tabela de venda possui os seguintes dados:
Faço o comando:select c.nome, sum(p.preco * v.quantidade_itens)
from cliente c, venda v, produto p
where c.id_cliente = v.id_cliente and p.id_produto = v.id_produto;
Supondo que o produto de código 1 têm valor 10, e que o cliente A possui código 1 e o B código 2 queria retornar uma lista de resultado com os valores:
– Resultado esperado
cliente A, 50
cliente B, 20
O que eu preciso mudar no código?