Usuário com melhor resposta
Dúvida com Select

Pergunta
-
Olá amigos, estou eu aqui com uma outra dúvida...rs
Tenho o código abaixo:SELECT P.data_pedido, PIT.codigo_pedido, SUM((PIT.Quantidade*Pr.peso)*Pr.peso) AS Peso_Total, P.CEP, P.taxa_envio, R.codigo_objeto, R.data AS Data_Envio FROM Pedido_Item AS PIT INNER JOIN Pedidos AS P ON PIT.codigo_pedido = P.codigo_pedido INNER JOIN Produtos AS Pr ON LEFT(PIT.codigo_produto,5) = Pr.codigo_produto INNER JOIN Remessa AS R ON P.codigo_pedido = R.codigo_pedido WHERE P.Atendido = 1 AND P.data_pedido > '11/01/2008' AND P.taxa_envio > 0 GROUP BY PIT.codigo_pedido, P.data_pedido, P.CEP, P.taxa_envio, R.codigo_objeto, R.data ORDER BY P.data_pedido
Utilizo este select para obter uma somatória do peso total de um determinado pedido, somando todos os pesos dos produtos associados a eles... Está me trazendo todas as informações que preciso, porém a soma do peso está sendo multiplicada pela quantidade de ítens do produto... Deve ser alguma coisinha bem simples, mais estou desde a outra semana tentando e não consegui descobrir o porque!
Novamente conto com a ajuda de vocês...
Obrigado.
Jorge Lima
Respostas
-
Jorge,
Você esta utilizando uma fórmula que esta realizando justamente este cálculo, fazendo uma soma e multiplicando os valores pelo peso e depois multiplicando novamente.O que exatamente você necessita que esta fórmula execute?
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA- Marcado como Resposta JayJr83 quinta-feira, 18 de junho de 2009 16:11
Todas as Respostas
-
Olá Jorge,
Não sei se entendi a tua dúvida. A soma do peso está sendo multiplica pela quantidade, e isto está errado, é isso?
Pois este trecho da tua query está fazendo exatamente isso!
SUM
((PIT.Quantidade*Pr.peso)*Pr.peso)
É este o problema? Se não for, detalhe um pouquinho melhor.
Um abraço,
Raul Santos Neto -
Jorge,
Você esta utilizando uma fórmula que esta realizando justamente este cálculo, fazendo uma soma e multiplicando os valores pelo peso e depois multiplicando novamente.O que exatamente você necessita que esta fórmula execute?
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA- Marcado como Resposta JayJr83 quinta-feira, 18 de junho de 2009 16:11
-
O código acima estava incorreto... O que estou usando é:
SELECT P.data_pedido, PIT.codigo_pedido, SUM(PIT.Quantidade*Pr.peso) AS Peso_Total, P.CEP, P.taxa_envio, R.codigo_objeto, R.data AS Data_Envio FROM Pedido_Item AS PIT INNER JOIN Pedidos AS P ON PPIT.codigo_pedido = P.codigo_pedido INNER JOIN Produtos AS Pr ON LEFT(PIT.codigo_produto,5) = Pr.codigo_produto INNER JOIN Remessa AS R ON P.codigo_pedido = R.codigo_pedido WHERE P.Atendido = 1 AND P.data_pedido > '11/01/2008' AND P.taxa_envio > 0 GROUP BY PIT.codigo_pedido, P.data_pedido, P.CEP, P.taxa_envio, R.codigo_objeto, R.data ORDER BY P.data_pedido
O que eu preciso é assim...Tabelas que eu tenho no banco:
Tabela Produtos
codigo_produto | Nome_produto | Peso
01234 | Produto 1 | 0,4
12345 | Produto 2 | 0,2
12545 | Produto 2 | 1
Tabela Pedidos
codigo_pedido | data_pedido | codigo_cliente | taxa_envio | CEP
00001 | 11/31/2008 | 00123 | 7,3 | 04232440
00002 | 11/30/2008 | 45680 | 2,5 | 02656587Tabela Pedido_Item
codigo_pedido | codigo_produto | quantidade_produto
00001 | 0123400000001 | 2
00001 | 1234500000002 | 1
00002 | 1234500000002 | 3Tabela Remessa
codigo_pedido | data_remessa | numero_remessa
00001 | 02/12/2008 | sw1111111111br
00002 | 02/12/2008 | sw023456789brO resultado que eu preciso trazer na consulta:
data_pedido | codigo_pedido | Peso_Total | CEP | taxa_envio | numero_remessa | data_envio
11/31/2008 | 00001 | 1 | 04232440 | 7,3 | sw1111111111br | 02/12/2008
11/30/2008 | 00002 | 0,6 | 02656587 | 2,5 | sw023456789br | 02/12/2008Já consigo trazer todos as colunas, só o pesso que ele está trazendo errado.... Ele me mostra:
data_pedido | codigo_pedido | Peso_Total | CEP | taxa_envio | numero_remessa | data_envio
11/31/2008 | 00001 | 3 | 04232440 | 7,3 | sw1111111111br | 02/12/2008
11/30/2008 | 00002 | 1,8 | 02656587 | 2,5 | sw023456789br | 02/12/2008Se tiver apenas 1 ítem no pedido o resultado fica certinho, agora quando tem mais de 1 ele pega o resultado da soma dos pesos e multiplica pela quantidade de ítens relacionados ao pedido.
Obrigado a todos....
Abraços.
Jorge Lima