For at opnå det ønskede output skal du beregne løbende totaler af produktsalg. For at få meningsfulde data, dataene i sales
tabellen skal ordnes kronologisk. Så du har brug for mindst et felt mere til at sortere data - det er lige meget om det er et tidsstempel eller id
Mark. Lad os antage, at der er et id
felt i salgstabellen. Dette er en forespørgsel for at få det, du beskrev:
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
Den anden forekomst af sales
tabel kaldet sales_2
bruges til at beregne summen af tidligere salg (sales_2.id<sales.id
)
Du kan ekskludere sales.id
fra select
klausul, men du skal beholde den i group by
og order by
.