För att uppnå önskad produktion måste du beräkna löpande totalsummor för produktförsäljning. För att få meningsfull data, data i sales
tabellen måste ordnas kronologiskt. Så du behöver minst ett fält till för att sortera data - det spelar ingen roll om det är en tidsstämpel eller id
fält. Låt oss anta att det finns ett id
fältet i försäljningstabellen. Det här är en fråga för att 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 andra instansen av sales
tabell som heter sales_2
används för att beräkna summan av tidigare försäljningar (sales_2.id<sales.id
)
Du kan utesluta sales.id
från select
sats, men du måste behålla den i group by
och order by
.