Re: [SQL ] 時間區間中的數量
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):