Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como subtrair estoque e venda usando a subconsulta mysql?


Para alcançar a saída desejada, você precisa calcular os totais correntes de vendas de produtos. Para obter dados significativos, os dados em sales tabela deve ser ordenada cronologicamente. Portanto, você precisa de pelo menos mais um campo para classificar os dados - não importa se é um carimbo de data/hora ou id campo. Vamos supor que haja um id campo na tabela de vendas. Esta é uma consulta para obter o que você descreveu:
SELECT 
    sales.id,
    sales.store_id,
    sales.product_id,
    inventories.quantity-IFNULL(SUM(sales_2.quantity), 0) as inventory,
    sales.quantity as sales,
    inventories.quantity-IFNULL(SUM(sales_2.quantity), 0) - sales.quantity as remaining
FROM
    sales
        INNER JOIN
    inventories ON inventories.store_id = sales.store_id
        AND inventories.product_id = sales.product_id
        LEFT JOIN
    sales AS sales_2 ON sales_2.store_id = sales.store_id
        AND sales_2.product_id = sales.product_id
        AND sales_2.id < sales.id
GROUP BY sales.id , sales.store_id , sales.product_id
ORDER BY sales.id

A segunda instância de sales tabela chamada sales_2 é usado para calcular a soma das vendas anteriores (sales_2.id<sales.id )

Você pode excluir sales.id a partir do select cláusula, mas você precisa mantê-la em group by e order by .