Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Somar Qtd de Venda + Troca_Saida de Produtos Por Clientes


Braulio Ribeiro

Pergunta

Boa tarde pessoal. Mas uma vez preciso de uma ajuda...Estou tentando desde segunda-feira, sei que é possível mas não estou conseguindo. A dúvida é bem parecida com meu primeiro tópico "(Resolvido) Somar e Subtrair", mas mesmo assim não consegui resolver, pois acho que tem algum detalhe a mais e não acho o erro.

Nesse caso preciso somar todas as vendas com todas as trocas_saidas, e apresentar o resultado agrupando os produtos por nome e filtrando por cliente.

Consegui fazer duas consultas, agora preciso junta-las. Veja meu código e o resultado que está aparecendo.

SELECT V.idClienteFornecedor, VS.idProduto, SUM(VS.quantidadeItem) AS S
FROM PedidoVendaItens VS, PedidoVenda V
WHERE VS.idPedidoVenda=V.idPedidoVenda
GROUP BY V.idClienteFornecedor, VS.idProduto
ORDER BY V.idClienteFornecedor, VS.idProduto
SELECT T.idClienteFornecedor, TS.idProduto, SUM(TS.quantidadeItem) AS TS
FROM TrocaMercadoriaSaida TS, TrocaMercadoria T
WHERE TS.idTrocaMercadoria=T.idTrocaMercadoria
GROUP BY T.idClienteFornecedor, TS.idProduto
ORDER BY T.idClienteFornecedor, TS.idProduto
Este é o código que eu estou tentando juntar os dois resultados, mas ele está duplicando a quantidade de campos, e apresentando valores errados.
SELECT C.idClienteFornecedor, P.idProduto, SUM(VS.quantidadeItem) AS V, SUM(TS.quantidadeItem) AS TS
FROM ClienteFornecedor C
FULL JOIN PedidoVenda V
ON V.idClienteFornecedor=C.idClienteFornecedor
FULL JOIN PedidoVendaItens VS
ON VS.idPedidoVenda=V.idPedidoVenda
FULL JOIN TrocaMercadoria T
ON T.idClienteFornecedor=C.idClienteFornecedor
FULL JOIN TrocaMercadoriaSaida TS
ON TS.idTrocaMercadoria=T.idTrocaMercadoria
INNER JOIN Produto P
ON VS.idProduto=P.idProduto OR TS.idProduto=P.idProduto
GROUP BY C.idClienteFornecedor, P.idProduto
ORDER BY C.idClienteFornecedor, P.idProduto

sb15426101.jpg

Editado por Braulio Ribeiro
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Braulio,

Foi no seu post que coloquei uma obs sobre o SUM... rs:

"Outra coisa importante que dá um trabalho feio: quando se utiliza o Left/right Join, os relacionamento vão se exponencializando... ao utilizar a função SUM, torna-se muito dificil ter uma soma "adequada". Uma dica interessante é utilizar o SUM mais simples possível."

O seu agrupamento está sendo duplicado por causa da coluna IdProduto. Os ID´s devem ser iguais para que o sql agrupe as informações. Caso sejam diferentes (no seu caso deve ser chave), não haverá agrupamento.

Tente fazer uma soma simples. De preferância com apenas a coluna que deseja somar. Depois que o resultado der certo, vá implementando os demais campos.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Fulvio, consegui. Obrigado pela dica.

Estou estudando os comandos SQL, provavelmente precisarei de mais dicas.

Solução do problema:

SELECT C.idClienteFornecedor, C.nomeClienteFornecedor, P.idProduto, P.descricaoProduto,
(SELECT SUM(VS.quantidadeItem) FROM PedidoVendaItens VS, PedidoVenda V WHERE VS.idProduto=P.idProduto AND VS.idPedidoVenda=V.idPedidoVenda AND V.idClienteFornecedor=C.idClienteFornecedor) AS VS,
(SELECT SUM(DE.quantidadeItem) FROM DevolucaoItens DE, Devolucao D WHERE DE.idProduto=P.idProduto AND DE.idDevolucao=D.idDevolucao AND D.idClienteFornecedor=C.idClienteFornecedor) AS DE,
(SELECT SUM(TS.quantidadeItem) FROM TrocaMercadoriaSaida TS, TrocaMercadoria T WHERE TS.idProduto=P.idProduto AND TS.idTrocaMercadoria=T.idTrocaMercadoria AND T.idClienteFornecedor=C.idClienteFornecedor) AS TS,
(SELECT SUM(TE.quantidadeItem) FROM TrocaMercadoriaEntrada TE, TrocaMercadoria T WHERE TE.idProduto=P.idProduto AND TE.idTrocaMercadoria=T.idTrocaMercadoria AND T.idClienteFornecedor=C.idClienteFornecedor) AS TE
FROM ClienteFornecedor C
FULL JOIN PedidoVenda V
ON V.idClienteFornecedor=C.idClienteFornecedor
FULL JOIN PedidoVendaItens VS
ON VS.idPedidoVenda=V.idPedidoVenda
FULL JOIN Devolucao D
ON D.idClienteFornecedor=C.idClienteFornecedor
FULL JOIN DevolucaoItens DE
ON DE.idDevolucao=D.idDevolucao
FULL JOIN TrocaMercadoria T
ON T.idClienteFornecedor=C.idClienteFornecedor
FULL JOIN TrocaMercadoriaSaida TS
ON TS.idTrocaMercadoria=T.idTrocaMercadoria
FULL JOIN TrocaMercadoriaEntrada TE
ON TE.idTrocaMercadoria=T.idTrocaMercadoria
INNER JOIN Produto P
ON VS.idProduto=P.idProduto OR DE.idProduto=P.idProduto OR TS.idProduto=P.idProduto OR TE.idProduto=P.idProduto
GROUP BY P.idProduto, P.descricaoProduto, C.idClienteFornecedor, nomeClienteFornecedor
ORDER BY P.descricaoProduto

sb15426102.jpg

Editado por Braulio Ribeiro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...