Untuk mencapai hasil yang diinginkan, Anda perlu menghitung total penjualan produk yang berjalan. Untuk mendapatkan data yang berarti, data di sales
tabel harus diurutkan secara kronologis. Jadi, Anda memerlukan setidaknya satu bidang lagi untuk mengurutkan data - tidak masalah apakah itu stempel waktu, atau id
bidang. Mari kita asumsikan ada id
bidang dalam tabel penjualan. Ini adalah kueri untuk mendapatkan apa yang Anda jelaskan:
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
Contoh kedua dari sales
tabel bernama sales_2
digunakan untuk menghitung jumlah penjualan sebelumnya (sales_2.id<sales.id
)
Anda dapat mengecualikan sales.id
dari select
klausa, tetapi Anda harus menyimpannya di group by
dan order by
.