情境:每天都會產生不確定的訂單數量
假設今天產生有八筆訂單
id / status
1 / 處理中
2 / 處理中
3 / 處理中
4 / 處理中
5 / 處理中
6 / 處理中
7 / 處理中
8 / 處理中
我利用迴圈將這八筆訂單的狀態一次改為「出貨中」
問題:
我要如何將這八筆變成是一個搜集?(收納)
假設變為出貨中時,我可以給這八筆一個 ID
然後掛上一個日期假設 2018-11-11 16:40:00(我在這個時間點將這八個訂單變為出貨中)
並賦予一個ID
假設昨天有六筆
id / status
11 / 處理中
12 / 處理中
13 / 處理中
14 / 處理中
15 / 處理中
16 / 處理中
我一樣將狀態改為出貨中後
也會產生獨立ID,並加上日期例如 2018-11-10 11:32:00
所以另一頁會有一個列表會顯示
2018-11-11 16:40:00
2018-11-10 11:32:00
當我點進去 11-11 這筆時,可以看到那八筆訂單(關聯性數據)
當我點進去 11-10 這筆時,可以看到昨天那六筆
這能怎麼實現呢?怎麼把當次的操作收納起來?賦予ID並顯示?
記得曾經處理過類似的需求,由於不能肯定就是問題所要描述,所以先作點背景說明。
每個一段時間(自動觸發 or 人工)處理中間這段時間的訂單,
由於訂單處理的過程會取用人工輸入的設定,以及與另一台主機溝通記錄。
在人工可能會出錯,加上另一台主機並不會回傳每筆要求成功與否。
因此需要為了訂單的處理加上 批號
,當事後發現某筆訂單處理出錯,
就可以快速抓出其它一起被處理的訂單進㣔檢查。
有個獨立的 批號
資料表,批號是主鍵、自動遞增,再加上處理時間…等其它描述資訊。
處理一批訂單前先産生一個批號,拿這個批號寫回訂單的相關資料中。
如此拉取訂單資料的同時,也可以藉由相同的批號 JOIN 出其它同批號的訂單。
至於批號是放在訂單表中,還是獨立一張表格。
如上面的討論,這已經是資料結構規劃的問題,得由處理的人視條件、限制去設計。
這裡只是把當時的一些思路在這裡提出來以供參考。
我的解法文中都有啊~~ 所謂的「想不到」指的是什麼?
可能要把問題細分,講清楚一點,讓其它人有辦法「精準」回應…
不然也只能給大約的答案…
我試著講詳細一點好了…
假設批號資料表(batch_no)是…
id | timestamp | handler |
---|---|---|
編號 | 時間 | 處理者 |
你文中提到是一次用迴圈把多筆資料一次改為「處理中」。
表示應該可以在迴圈前先對 批號 資料表加一筆資料。
例如: INSERT INTO batch_no VALUES ( NULL, NOW(), 'ddtet')
接著就可以執行 SELECT LAST_INSERT_ID()
取得剛剛自動産生的 ID ,接下來就是不同程式流程規劃的事情了…
你是說做迴圈之前先 INSERT INTO 一筆數據,先取得自動產生的ID
再拿這個ID去做迴圈,給該次迴圈的每一個訂單加上這個ID?
是啊~ 這樣既有批號記錄,也利用資料庫給予批號唯一性的保證。