0
假設我有如下表:MySQL的搜索受影響的行
production(rec_ID, item_ID, date, qty)
usage(rec_ID, item_ID, date, qty)
inventory(item_ID, stock)
隨着下面的示例數據:
Production
Rec_ID | item_ID | date | qty
1 | A | 2016-01-18 | 50
2 | A | 2016-01-19 | 50
3 | A | 2016-01-20 | 50
Usage
Rec_ID | item_ID | date | qty
100 | A | 2016-01-20 | 70
Inventory
item_ID| stock
A | 80
正如你所看到的,在生產任何東西會增加庫存和Usage中的任何內容都會減少Inventory。現在我有80個庫存A.我想在表格生產中搜索哪一行有剩餘庫存。規則是:早日生產將首先用完。
用法ID 100將從生產ID 1開始(70-50)。餘下的20將取自產品ID 2.因此,剩餘存貨爲:80(產品ID 2爲30,產品ID 3爲50)。如何根據庫存庫存獲取生產表中受影響的行?我想這樣的:
SELECT * FROM production ORDER BY date DESC
循環通過項目加起來的數量,直到它達到當前的庫存水平。例如:
current_Stock = SELECT stock FROM Inventory WHERE item_ID='A'
production_List = SELECT * FROM production WHERE item_ID='A' ORDER BY date DESC
for each production in production_List
qty_total += production.qty
(add each production to arraylist or something)
if qty_total >= current_Stock
exit for
end if
next
(process affected rows...)
在純SQL中有更好的方法嗎?
「純」 SQL並不總是像這樣複雜的業務規則最好的答案。你可能寫了一個存儲過程來做到這一點,但考慮讓這些東西卡在數據庫而不是應用程序代碼中的缺點。 – miken32