Não mostrar se resultado de select for = 0

MySQL

Banco de Dados

09/11/2017

Boa Tarde,

Tenho o select simples ( mysql) abaixo que faço para contar um estoque de terminado item que está com um determinado prestador de serviços;
Acontece que gostaria que me mostrasse apenas se o resultado da subtração for maior que 0

SELECT cod_produto,

SUM(entrada) as entradas,
SUM(saida) as saidas,
(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440' 

GROUP BY cod_produto


já tentei isto e não funcionou !!!

SELECT cod_produto,

SUM(entrada) as entradas,
SUM(saida) as saidas,
(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440' AND total > 0

GROUP BY cod_produto


Tentei isto também para simplificar o codigo e também não funcionou.
SELECT cod_produto,

(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440' AND total > 0

GROUP BY cod_produto


Agradeço de coração se alguem puder me ajudar.
Fernando

Fernando

Curtidas 0

Melhor post

Fabiano Carvalho

Fabiano Carvalho

09/11/2017

Tente assim

SELECT * FROM (

SELECT cod_produto,

(SUM(entrada) - SUM(saida)) as total

FROM estoq_prestador

WHERE cod_prestador = '440'

GROUP BY cod_produto) AS [SRC]
WHERE TOTAL > 0
GOSTEI 1

Mais Respostas

Fernando

Fernando

09/11/2017

Boa TArde,

Deu erro de sintaxe
Erro
Static analysis:

12 errors were found during analysis.

Unexpected character. (near "[" at position 162)
Unexpected character. (near "]" at position 166)
An expression was expected. (near "(" at position 14)
Unexpected token. (near "(" at position 14)
This type of clause was previously parsed. (near "SELECT" at position 19)
Unexpected token. (near ")" at position 157)
Unrecognized keyword. (near "AS" at position 159)
Unexpected token. (near "[" at position 162)
Unexpected token. (near "SRC" at position 163)
Unexpected token. (near "]" at position 166)
This type of clause was previously parsed. (near "WHERE" at position 169)
Unrecognized statement type. (near "WHERE" at position 169)
Comando SQL: Documentação

SELECT * FROM ( SELECT cod_produto, (SUM(entrada) - SUM(saida)) as total FROM estoq_prestador WHERE cod_prestador = '440' GROUP BY cod_produto) AS [SRC] WHERE TOTAL > 0

Mensagens do MySQL : Documentação

#1064 - Você tem um erro de sintaxe no seu SQL próximo a '[SRC]
WHERE TOTAL > 0' na linha 11
GOSTEI 0
Fabiano Carvalho

Fabiano Carvalho

09/11/2017

isso no sql server funciona haha, mas enfim, não conheço muito mysql, mas tente dessa forma.

SELECT cod_produto,
(SUM(entrada) - SUM(saida)) as total
FROM estoq_prestador
WHERE cod_prestador = '440'
GROUP BY cod_produto
WHERE TOTAL > 0
HAVING SUM(entrada) - SUM(saida) > 0

GOSTEI 1
Fernando

Fernando

09/11/2017

isso no sql server funciona haha, mas enfim, não conheço muito mysql, mas tente dessa forma.

SELECT cod_produto,
(SUM(entrada) - SUM(saida)) as total
FROM estoq_prestador
WHERE cod_prestador = '440'
GROUP BY cod_produto
WHERE TOTAL > 0
HAVING SUM(entrada) - SUM(saida) > 0



Ele conseguiu executar mas ainda retorna valor 0.

Para se ter ideia, ele retorna o numero 6 que é o correto e retorna o Zero referente a um outro item, este não deveria aparecer nessa consulta.

Obrigado pelo apoio
GOSTEI 0
Marcelo Santana

Marcelo Santana

09/11/2017

Boa tarde, Fernando. Já fizeram alguns testes hein. Tente dessa forma:


SELECT 
	cod_produto, 
        (SUM(entrada)-SUM(saida)) as total 
FROM `estoq_prestador` 
WHERE (
       SELECT (SUM(entrada)-SUM(saida))) > 0 
GROUP BY cod_produto;



Espero que de certo, tenha uma ótima tarde.
GOSTEI 0
Marcelo Santana

Marcelo Santana

09/11/2017

falto setar o cod_produto na clausula Where. :)
GOSTEI 0
Fernando

Fernando

09/11/2017

falto setar o cod_produto na clausula Where. :)


Boa noite Marcelo,

O codigo funcionou em partes, agora ele não aparece mais os itens que estão zerados mas deixou de fazer a subtração.
GOSTEI 0
Fernando

Fernando

09/11/2017

isso no sql server funciona haha, mas enfim, não conheço muito mysql, mas tente dessa forma.

SELECT cod_produto,
(SUM(entrada) - SUM(saida)) as total
FROM estoq_prestador
WHERE cod_prestador = '440'
GROUP BY cod_produto
WHERE TOTAL > 0
HAVING SUM(entrada) - SUM(saida) > 0



Depois de algumas coca-colas hehe Segue a solução - eu removi o where total pois acredito que ficou redundante

SELECT cod_prestador,
cod_produto,
(SUM(entrada) - SUM(saida)) as TOTAL

FROM estoq_prestador

WHERE cod_prestador = '440'

GROUP BY cod_produto
HAVING SUM(entrada) - SUM(saida) > 0


Desde já, agradeço a ajuda.
GOSTEI 0
POSTAR