Fórum Junçao de dois Codigos em SQL #498570
21/10/2014
0
dar erro nos valores de estoque, mas quando faço separadamente ele dar o resultado certinho,
tem alguem aí poderia me ajudar a juntar esses dois codigo sem que dê problema no valores.
SELECT ESTOQUE.CODIGO,
ESTOQUE.NOME,
SUM(ITECOMPRAS.QTD) AS COMPRAS,
COMPRAS.MODELO
FROM ESTOQUE,ITECOMPRAS,COMPRAS
WHERE ESTOQUE.CODIGO=ITECOMPRAS.CODIGO AND
ITECOMPRAS.NOTA=COMPRAS.NOTA AND
COMPRAS.MODELO='01'
GROUP BY ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO
SELECT ITEVENDAS.CODIGO,
SUM(ITEVENDAS.QTD) QTD_VENDA,
ESTOQUE.NOME
FROM ITEVENDAS,ESTOQUE
WHERE ITEVENDAS.CODIGO=ESTOQUE.CODIGO AND
ITEVENDAS.MODELO='01'
GROUP BY ITEVENDAS.CODIGO,
ESTOQUE.NOME
Tiago Rodrigues
Curtir tópico
+ 0Posts
21/10/2014
Wander Santos
select ......
union
select...
Gostei + 0
21/10/2014
Tiago Rodrigues
Gostei + 0
21/10/2014
Wander Santos
Pq com o Union era pra da certo
Gostei + 0
21/10/2014
Marisiana Battistella
SELECT ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO AS MODELOVENDA,
ITEVENDAS.MODELO AS MODELOCOMPRA,
SUM(ITECOMPRAS.QTD) AS COMPRAS,
SUM(ITEVENDAS.QTD) AS QTD_VENDA
FROM ESTOQUE
INNER JOIN ITECOMPRAS
ON ESTOQUE.CODIGO =ITECOMPRAS.CODIGO
INNER JOIN COMPRAS
ON ITECOMPRAS.NOTA=COMPRAS.NOTA
INNER JOIN ITEVENDAS
ON ESTOQUE.CODIGO = ITEVENDAS.CODIGO
WHERE COMPRAS.MODELO='01'
AND ITEVENDAS.MODELO='01'
GROUP BY ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO,
ITEVENDAS.MODELO
ORDER BY ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO,
ITEVENDAS.MODELO
Acredito q o motivo pelo qual retorna dados errado é que no segundo vc inclui o ITEVENDAS.CODIGO e no primeiro o ESTOQUE.CODIGO isso, logicamente, faz agrupamentos de dados diferentes e por isso os resultados são diferentes.
Gostei + 0
21/10/2014
Tiago Rodrigues
a logica foi a mesma, olha o que aconteceu tanto no meu codigo quanto o seu.
Exemplo: Dei uma entrada de nota do Produto A de 50 quantidades e fiz uma venda do mesmo de 2. Depois outra
entrada de mais 30 produtos A no estoque, automaticamente ele duplica o total de venda para 4, ou seja, sempre
que dou uma entrada, o valor da venda sempre duplica...Outra coisa que acontece tambem, so vai aparecer no meu
relatorio se pelo menos tiver uma compra ou uma venda para o mesmo produto, se tiver so uma compra ou so uma
venda, ele nao aparece.
Obrigado a todos !!
Gostei + 0
21/10/2014
Tiago Rodrigues
Pq com o Union era pra da certo
Ele separado roda sem nenhum problema.
Obrigado !!!
Gostei + 0
21/10/2014
Tiago Rodrigues
SELECT ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO AS MODELOVENDA,
ITEVENDAS.MODELO AS MODELOCOMPRA,
SUM(ITECOMPRAS.QTD) AS COMPRAS,
SUM(ITEVENDAS.QTD) AS QTD_VENDA
FROM ESTOQUE
INNER JOIN ITECOMPRAS
ON ESTOQUE.CODIGO =ITECOMPRAS.CODIGO
INNER JOIN COMPRAS
ON ITECOMPRAS.NOTA=COMPRAS.NOTA
INNER JOIN ITEVENDAS
ON ESTOQUE.CODIGO = ITEVENDAS.CODIGO
WHERE COMPRAS.MODELO='01'
AND ITEVENDAS.MODELO='01'
GROUP BY ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO,
ITEVENDAS.MODELO
ORDER BY ESTOQUE.CODIGO,
ESTOQUE.NOME,
COMPRAS.MODELO,
ITEVENDAS.MODELO
Acredito q o motivo pelo qual retorna dados errado é que no segundo vc inclui o ITEVENDAS.CODIGO e no primeiro o ESTOQUE.CODIGO isso, logicamente, faz agrupamentos de dados diferentes e por isso os resultados são diferentes.
Marisiana, Ocorreu a mesma coisa que aconteceu quando fiz a junção dos condigo, a forma foi diferente, mas
a logica foi a mesma, olha o que aconteceu tanto no meu codigo quanto o seu.
Exemplo: Dei uma entrada de nota do Produto A de 50 quantidades e fiz uma venda do mesmo de 2. Depois outra
entrada de mais 30 produtos A no estoque, automaticamente ele duplica o total de venda para 4, ou seja, sempre
que dou uma entrada, o valor da venda sempre duplica...Outra coisa que acontece tambem, so vai aparecer no meu
relatorio se pelo menos tiver uma compra ou uma venda para o mesmo produto, se tiver so uma compra ou so uma
venda, ele nao aparece.
Obrigado a todos !!
Gostei + 0
22/10/2014
Marisiana Battistella
Gostei + 0
22/10/2014
Marisiana Battistella
Gostei + 0
22/10/2014
David Sylvestre
Gostei + 0
22/10/2014
Tiago Rodrigues
Nao entendi muito bem o que vc quis dizer, teria como tu explicar
como seria essas quantidade de colunas...Obriagado!!!
Gostei + 0
22/10/2014
Tiago Rodrigues
Tambem estou achando que seja algo relacionado a isso, so que nao
consegui vê qual seria essa ligação Marisiana.
Gostei + 0
22/10/2014
Marisiana Battistella
ESTOQUE.CODIGO, ESTOQUE.NOME, SUM(ITECOMPRAS.QTD) AS COMPRAS, COMPRAS.MODELO
no segundo select
ITEVENDAS.CODIGO, SUM(ITEVENDAS.QTD) QTD_VENDA, ESTOQUE.NOME
O retorno do SQL varia conforme as colunas que vc inclui, tabelas que vc referencia e das junções que vc faz entres elas e da ordem do agrupamento (GROUP BY)
Você tem que observar que está fazendo dois selects com uma regra que não está tão igual assim.
No exemplo que te passei uni os dois selects para obter um resultado mais correto possível. Agora vc tem q verificar qual é a regra que esse select tem q atender, se são necessários incluir aqueles filtros na cláusula WHERE, de quais campos e quais tabelas você terá que vincular para buscar as informações corretas.
Gostei + 0
22/10/2014
David Sylvestre
como seria essas quantidade de colunas...Obriagado!!!
"Para utilizar o UNION, o número e a ordem das colunas precisam ser idênticos em todas as queries e os data types precisam ser compatíveis."
Read more: http://www.linhadecodigo.com.br/artigo/945/sql-utilizando-o-operador-union-e-union-all.aspx#ixzz3GsdPytPg
Gostei + 0
22/10/2014
Marisiana Battistella
Se vc incluir apenas
SUM(ITECOMPRAS.QTD) AS COMPRAS, SUM(ITEVENDAS.QTD) QTD_VENDA,
As informações serão totalizadas respeitando o foi definido na clausula WHERE.
Se você incluir
ESTOQUE.CODIGO, ESTOQUE.NOME, SUM(ITECOMPRAS.QTD) AS COMPRAS, SUM(ITEVENDAS.QTD) QTD_VENDA
você está pedindo que some os itens de compra e venda por NOME e por CÓDIGO, dessa forma, você terá que incluir esses dois campos no GROUP BY para que o cálculo seja realizado.
Gostei + 0