Để đạt được sản lượng mong muốn, bạn cần tính toán tổng doanh số bán sản phẩm đang chạy. Để có được dữ liệu có ý nghĩa, dữ liệu trong sales
bảng phải được sắp xếp theo thứ tự thời gian. Vì vậy, bạn cần ít nhất một trường nữa để sắp xếp dữ liệu - không thành vấn đề nếu đó là dấu thời gian hay id
đồng ruộng. Giả sử có một id
trường trong bảng bán hàng. Đây là một truy vấn để lấy những gì bạn đã mô tả:
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
Ví dụ thứ hai của sales
bảng được gọi là sales_2
được sử dụng để tính tổng doanh số bán hàng trước đó (sales_2.id<sales.id
)
Bạn có thể loại trừ sales.id
từ select
, nhưng bạn cần giữ nó trong nhóm group by
và order by
.