Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Sinceramente, já penei aqui mas não to encontrando, não sei se o comportamento do MySQL com relação a JOINS é diferente de outros bancos, mas ta estranho.
Quem puder dar uma ajuda :D
O problema é que está retornando a quantidade vendida duplicado, caso tenham sido vendidos 43, retorna 86. :(
SELECT
prod.PRODUTO_NOME,
prod.PRODUTO_QUANT_MIN_ESTOQUE AS QTDMinima,
prod.PRODUTO_QUANT_ESTOQUE AS QTDInicial,
(
IFNULL(SUM(compras.COMPRA_ITEM_QUANT), 0)
) AS QTDComprada,
(
IFNULL(SUM(vendas.VENDA_ITEM_QUANT), 0)
) AS QTDVendida,
(
IFNULL(
/* Quantidade Comprada */
IFNULL(SUM(compras.COMPRA_ITEM_QUANT), 0) + IFNULL(prod.PRODUTO_QUANT_ESTOQUE, 0)
-
/* Quantidade Vendida */
IFNULL(SUM(vendas.VENDA_ITEM_QUANT), 0)
, 0)
) AS QTDEmEstoque,
(
IF(
(
/* Quantidade Comprada */
IFNULL(SUM(compras.COMPRA_ITEM_QUANT), 0) + IFNULL(prod.PRODUTO_QUANT_ESTOQUE, 0)
-
/* Quantidade Vendida */
IFNULL(SUM(vendas.VENDA_ITEM_QUANT), 0)
) < IFNULL(SUM(prod.PRODUTO_QUANT_MIN_ESTOQUE), 0), 'SIM', 'NAO')
) AS ProdutoNoLimiteDeEstoque
FROM
tbproduto AS prod
LEFT OUTER JOIN tbvenda_item AS vendas ON prod.PRODUTO_COD = vendas.PRODUTO_COD
LEFT OUTER JOIN tbcompra_item AS compras ON prod.PRODUTO_COD = compras.PRODUTO_COD
WHERE
prod.PRODUTO_QUANT_MIN_ESTOQUE IS NOT NULL
GROUP BY
prod.PRODUTO_CODCarregando comentários...