वांछित आउटपुट प्राप्त करने के लिए आपको उत्पाद की बिक्री के कुल योग की गणना करने की आवश्यकता है। सार्थक डेटा प्राप्त करने के लिए, sales
में डेटा तालिका को कालानुक्रमिक रूप से क्रमबद्ध किया जाना चाहिए। इसलिए आपको डेटा सॉर्ट करने के लिए कम से कम एक और फ़ील्ड चाहिए - इससे कोई फ़र्क नहीं पड़ता कि यह टाइमस्टैम्प है, या id
है खेत। आइए मान लें कि एक id
है बिक्री तालिका में क्षेत्र। आपने जो वर्णन किया है उसे प्राप्त करने के लिए यह एक प्रश्न है:
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
sales
. का दूसरा उदाहरण sales_2
. नामक तालिका पिछली बिक्री के योग की गणना करने के लिए उपयोग किया जाता है (sales_2.id<sales.id
)
आप sales.id
. को बाहर कर सकते हैं select
. से क्लॉज, लेकिन आपको इसे group by
में रखना होगा और order by
।