Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Erro na consulta

Olá, percebi que existe um erro na lógica da consulta do curso Realizando consultas com SQL: Joins, Views e transações.

Ela deveria calcular o "valor total dos pedidos". Porem não está sendo considerado a quantidade dos itenspedidos, ou seja, nessa consulta ele soma os itenspedidos de forma individual, sendo que um item de pedido pode ter uma quantidade maior que 1 e isso não está sendo considerado.

Código com erro na consulta:

SELECT p.id, c.nome, SUM(ip.precounitario) AS ValorTotalPedido
FROM clientes c
JOIN pedidos p ON c.id = p.idcliente
JOIN itenspedidos ip ON p.id = ip.idpedido
GROUP BY p.id, c.nome;

Então analisei que deveria ser "SUM(ip.precounitario * ip.quantidade)"

Exemplo:

SELECT p.id, c.nome, SUM(ip.precounitario * ip.quantidade) AS ValorTotalPedido
FROM clientes c
JOIN pedidos p ON c.id = p.idcliente
JOIN itenspedidos ip ON p.id = ip.idpedido
GROUP BY p.id, c.nome;

Pois assim ele soma os pedidos e de acordo com a quantidade que cada um tem, dando o valor total de cada pedido de forma correta.

OBS: O mesmo erro se repete mais a frente no video de "Criando TRIGGER"

SELECT DATE(datahorapedido) AS Dia, SUM(ip.precounitario) AS FaturamentoDiario -- Falta o ip.quantidade dentro do SUM
FROM pedidos p
JOIN itenspedidos ip
ON p.id = ip.idpedido
GROUP BY Dia
ORDER BY Dia;
1 resposta
solução!

Oi William, tudo bem?

Entendo que a situação pode parecer confusa, já que o campo é chamado de "precounitario", o que sugere que se refere ao preço de uma unidade. No entanto, esse campo já está multiplicado pela quantidade de itenspedidos. Para uma explicação mais clara, recomendo que você assista a partir do minuto 3:26 do vídeo, onde a instrutora menciona essa questão. Ela executa uma consulta que exibe os campos id, quantidade, precounitario e preco, demonstrando que o preço unitário já considera a multiplicação pela quantidade.

Aqui está a consulta utilizada:

SELECT p.id, ip.quantidade, pr.preco, ip.precounitario 
FROM pedidos p
JOIN itenspedidos ip ON p.id = ip.idpedido
JOIN produtos pr ON pr.id = ip.idproduto

E o resultado é o seguinte:

Imagem de uma tabela com as colunas 'id', 'quantidade', 'preco' e 'preco unitario'. Alguns valores na coluna 'quantidade' possuem um ícone de 'X' vermelho, e na coluna 'preco' há um sinal de igual vermelho ao lado dos valores. A tabela exibe diferentes valores, incluindo cálculos de preço unitário.

Espero ter esclarecido.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado