Re: [SQL ] 時間區間中的數量

看板Database作者 (啾咪5566)時間12年前 (2013/08/31 14:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《jomi5566 (啾咪5566)》之銘言: : 大家好 : 我必須要寫一個系統管理某一種可被借用的資源 : 東西會借出又歸還, 我要寫的是預約系統, 讓大家先查也沒有數量可以借 : 預約單中我存了開始日期sDate, 結束日期eDate : 可是問題是, 以下是訂單預約時間, 假設系統中有三台設備 : A--------------- B--------- : C--------- : 這個時候如果D進來預約 : A--------------- B--------- : C--------- : D------------------- : 然後我用 SELECT (*) from `order` WHERE sDate BETWEEN D.sDate AND D.eDate : OR eDate BETWEEN D.sDate AND D.eDate : 會選出3筆訂單, 則3等於系統可用數量3, 就只能回沒有數量可借 : 但是從上面那個圖可以看得出來D是還有數量的 : 因為B會拿A還的那台, 我要怎麼做才可以處理這個情況呢? : 我覺得我存的訊息好像太少了 : 是不是沒有辦法解決這個情況 : 不知道一般這種情況大家是用什麼方法來做的? : 謝謝 自問自答, 我想了一下, 現在是這樣做, PO出來讓大家看看有沒有問題 補充一下命題, 系統中有 3 台設備 已經有 3 筆訂單, A:2~7 B:11~15 C:4~9 時間軸 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A:---2~7---------- B:----11~15------- C:----4~9------- 這時候如果D進來預約7~12 時間軸 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A:---2~7---------- B:----11~15------- C:----4~9------- D:----7~12--------- 我就拿7~12每一天都去問一次DB, 得到: 7:有2筆(A,C) 8:有1筆(C) 9:有1筆(C) 10:有0筆 11:有1筆(B) 12:有1筆(B) 最大值2 < 系統有的數量 3, 所以還有機器可以借, 訂單D成立 我知道這問題可能是DB query很大, 一次查詢大概是5~10次 DB query (實際數據, 因為我要借的東西大概就是被借5~10天) 但是因為我的系統loading算很小, 目前一天大概20個人來用 未來也許成長到50人, 算起來一個小時大概不超過10個人用 我覺得應該是還OK 不過因為我沒有很有DB的經驗 不知道大家有沒有什麼看法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 98.164.236.108
文章代碼(AID): #1I8Ou6td (Database)
文章代碼(AID): #1I8Ou6td (Database)