2009-10-22 52 views
0

產品(productId參數INT PK,bidCount INT)計算合適的出價,上的產品

投標(bidID INT PK,productId參數INT,用戶id INT,isCounted位,創造了DATETIME)

存在1:多產品和出價之間的關係。

每個標識週期會持續1天,因此我需要跟蹤每天的唯一標價並更新bidCount列。我爲批處理過程中處理的每一行設置了isCounted = 1。

因此,這是一天中產品的唯一競標價格。

我有一個SQL作業,每5分鐘運行一次以更新bidCount。

的步驟,我想我需要爲此查詢:

  1. 搶已經isCounted = 1
  2. 查詢#1構建的productID和uniqueBidCounts其中isCounted = 1個查詢#2建立一個列表中的所有行的productID和uniqueBidCounts的列表,其中isCounted = 0查詢#3構建的productID和uniqueBidCounts與之間#1和#2
  3. 更新產品表格中的差異通過使用添加uniqueBidCounts到bidCount柱查詢#3
  4. 列表爲t設置isCounted = 1他列出查詢#2

這是正確的做法嗎?這是一個複雜的方法,還是可以簡化?

更新 我添加了日期時間字段創建的,所以我會在每天(或在同一進程)運行另一個批處理作業

+0

如何判斷出價是否在出價週期內?您是否說每個產品ID對於1天的出價週期都是獨一無二的? – Tim 2009-10-22 17:26:13

+0

蒂姆,我在投標表中添加了日期時間戳謝謝。 – mrblah 2009-10-22 18:04:45

回答

0

爲什麼不來篩選當天,並刪除任何舊的競價你用觸發器嗎?如果我理解你的問題是正確的,你可以把觸發器插入到投標表中。在此觸發器中,您將在適當的產品列表中增加bidCount。你也可以制定一個時間表,將在午夜運行,並將設置bidCount爲0.

+0

這不會是唯一的,它只是計數。 – Tim 2009-10-22 22:43:07

+0

哦,是的,我現在看到,我誤解了這個問題。 – user132371 2009-10-23 05:46:08

0

我認爲isCounted是你的錯誤方向。您必須查詢當天的所有出價,並按userId進行分組,然後對行進行計數並將該數字插入bidCount。

所以這是一個全天唯一的 競標產品。

因爲每次運行時都必須重新確定它們,所以您不能真正擁有唯一的唯一身份驗證。所以它是否已經被計算在內是無關緊要的。