Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom Dia Galera,
Estou com um problema em uma consulta com Inner Join em tres tabelas
Preciso fazer uma consulta que some a quantidade de produtos vendidos em uma data especifica, porém
o calculo esta saindo errado e não estou conseguindo identificar o erro.
a consulta é a seguinte
SELECT OrcProd.CodProd, Produtos.Descricao, SUM(OrcProd.Quantidade), FROM Produtos
INNER JOIN OrcProd on Produtos.Codigo = OrcProd.CodProd
INNER JOIN Orcamentos on Orcamentos.QuitData = 'Data' and Orcamentos.OrcNum = OrcProd.OrcNum
GROUP BY OrcProd.CodProd, Produtos.Descricao
Me ajudem aí por favor ...
Que tal postar um exemplo do retorno dos dados?
Inseri 3 itens em um orçamento (Orçamento N° 5)
Codigo Descricao Quantidade
01 item1 1
02 item2 1
03 item3 1
executei o codigo:
SELECT OrcProd.CodProd, Produtos.Descricao, SUM(OrcProd.Quantidade) FROM Produtos
INNER JOIN OrcProd on Produtos.Codigo = OrcProd.CodProd
INNER JOIN Orcamentos on Orcamentos.QuitData = '27/10/2014' and Orcamentos.OrcNum = OrcProd.OrcNum
GROUP BY OrcProd.CodProd, Produtos.Descricao
e o resultado foi
Codigo Descricao Quantidade
01 item1 3
02 item2 3
03 item3 3
sendo que a quantidade deveria ser 1 de cada
O problemas esta nesta parte do inner join
INNER JOIN Orcamentos on Orcamentos.QuitData = '27/10/2014' and Orcamentos.OrcNum = OrcProd.OrcNum
Joga dentro having ou do where
Não consegui identificar o erro no inner Join que voce falou
O problemas esta nesta parte do inner join
INNER JOIN Orcamentos on Orcamentos.QuitData = '27/10/2014' and Orcamentos.OrcNum = OrcProd.OrcNum
Joga dentro having ou do where
Nao consegui identificar o Erro no Inner Join que voce falou
Tenta dessa maneira e ve se vai retorna o mesmo erro ou algum tipo de erro.
SELECT OrcProd.CodProd, Produtos.Descricao, SUM( distinct OrcProd.Quantidade) FROM Produtos
INNER JOIN OrcProd on Produtos.Codigo = OrcProd.CodProd
INNER JOIN Orcamentos on Orcamentos.QuitData = 'Data' and Orcamentos.OrcNum = OrcProd.OrcNum
GROUP BY OrcProd.CodProd, Produtos.Descricao
Tenta dessa maneira e ve se vai retorna o mesmo erro ou algum tipo de erro.
SELECT OrcProd.CodProd, Produtos.Descricao, SUM( distinct OrcProd.Quantidade) FROM Produtos
INNER JOIN OrcProd on Produtos.Codigo = OrcProd.CodProd
INNER JOIN Orcamentos on Orcamentos.QuitData = 'Data' and Orcamentos.OrcNum = OrcProd.OrcNum
GROUP BY OrcProd.CodProd, Produtos.Descricao
Dessa forma esta somando somente as quantidades com valores distintos e retornou
Codigo Descricao Quantidade
01 item1 1
02 item2 1
03 item3 1
Porem eu acrescentei mais um item de cada e deveria retornar na quantidade 2 de cada
Então vc tem que somar o item e sua quantidade vai ser sua resposta, não soma quantidade.
Então você tem que somar o item e sua quantidade vai ser sua resposta, não soma quantidade.
Eu preciso saber quantos produtos foram vendidos , essa quantidade é a quantidade de produtos que foram vendidos
Tente desta forma:
SELECT OrcProd.CodProd
, Produtos.Descricao
, SUM(OrcProd.Quantidade) as Soma_Quantidade
FROM Produtos
INNER JOIN OrcProd on Produtos.Codigo = OrcProd.CodProd
INNER JOIN Orcamentos on Orcamentos.OrcNum = OrcProd.OrcNum
where Orcamentos.QuitData = 'Data'
GROUP BY OrcProd.CodProd
, Produtos.Descricao
[sql]
A grosso modo, seria isso:
[sql]
declare @produtos table (Codigo int, Descricao varchar(max), Quantidade int)
insert into @produtos values (1, 'item01',1)
insert into @produtos values (2, 'item02',1)
insert into @produtos values (3, 'item03',1)
insert into @produtos values (1, 'item01',5)
insert into @produtos values (2, 'item02',5)
select SUM(Quantidade) as Soma_Quantidade
, Codigo
, Descricao
from @produtos
Group by Codigo, Descricao
Caso nao de certo, poste a estrutura das tabelas envolvidas.
Att.
Deixa eu ver se entendi certinho, vc quer saber a quantidade que foi vendido em uma certa data blz!
Eu montei pra vc um exemplo usando a base de dados northwind importada dentro do sql.
select dbo.Produtos.NomeDoProduto, sum (dbo.[Detalhes do Pedido].Quantidade) as 'quantidade vendida' from Pedidos
inner join [Detalhes do Pedido] on dbo.[Detalhes do Pedido].NúmeroDoPedido = Pedidos.NúmeroDoPedido
inner join Produtos on Produtos.CódigoDoProduto = dbo.[Detalhes do Pedido].CódigoDoProduto
where dbo.Pedidos.DataDoPedido = '1994-08-08'
group by dbo.Produtos.NomeDoProduto
neste exemplo eu peguei o nome do produto, quantidade que foi vendida e usei a data para ver quantos que foi vendido na quela data.
Obs: O SUM não entra dentro do group by
Deu certo ? Passa um feedback pra nós! Abraços
Uma forma de identificar isto é rodar a query com "select *" e sem agrupar, talvez seja algum produto cartesiano indevido.