Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leo Feijo

Erro na operação de adição entre SUM()

Recommended Posts

Pessoal, eu estou com um problema esquisito...

 

Quando eu utilizo:

SELECT SUM(`valorNfe`) FROM `SIGET-SAIDA`;

O valor retorna corretamente... mais ou menos 2 milhões

SELECT SUM(`valorNfe`) FROM `SIGET-ENTRADA`;

O valor também retorna corretamente... mais ou menos 1 milhão

 

Porém, quando faço a soma, usando o seguinte select o valor fica muito acima do esperado...

SELECT SUM(`SIGET-SAIDA`.`valorNfe`) + SUM(`SIGET-ENTRADA`.`valorNfe`)
FROM `SIGET-ENTRADA`, `SIGET-SAIDA`;

O select retorna 1,5 bilhões

 

Por que será?

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que o correto seria

SELECT SUM(`SIGET-SAIDA`.`valorNfe` + SIGET-ENTRADA`.`valorNfe`)
FROM `SIGET-ENTRADA`, `SIGET-SAIDA`;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Motta, muito obrigado pela resposta.

 

Desse jeito que você sugere eu também havia tentado, e conferi novamente e retornou 1,5 bilhão.

 

Eu consegui resolver vendo um outro post que você fez algum tempo atrás. Ficou assim:

SELECT SUM(x) totalFROM (
    
SELECT SUM(`SIGET-SAIDA`.`valorNfe`) x
FROM `SIGET-SAIDA`
    
UNION 
    
SELECT SUM(`SIGET-ENTRADA`.`valorNfe`) 
FROM `SIGET-ENTRADA`


) sub
Mas apenas para fins didáticos eu queria saber qual seria a sintaxe correta para utilização do operador de adição nesse caso do sum()
Seus posts tem me ajudado bastante no aprendizado do SQL.
Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois entendi o problema , ao fazer :

 

FROM `SIGET-ENTRADA`, `SIGET-SAIDA`;

 

você está fazendo um produto cartesiano , todas as linhas de uma tabela contra todas as linhas

da outra por isto o valor absurdo.

No sql do post #3 isto não ocorre

Compartilhar este post


Link para o post
Compartilhar em outros sites

.

 

 

Depois entendi o problema , ao fazer :

 

FROM `SIGET-ENTRADA`, `SIGET-SAIDA`;

 

você está fazendo um produto cartesiano , todas as linhas de uma tabela contra todas as linhas

da outra por isto o valor absurdo.

No sql do post #3 isto não ocorre

É isso, muito obrigado pela ajuda Motta! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.