2011-04-16 15 views
1

一個有趣的,我認爲:) - 我的應用程序中的用戶獲得他們執行的操作的積分。
我希望找到第一個用戶達到100分的目標。


要做到這一點的一種方法是返回所有執行的動作,以及它們的日期和點數,然後在PHP中運行它們以查找到達目標的第一個用戶,但是我想知道是否可以在SQL中執行此操作。

我知道如何將所有到達目標的用戶返回到特定日期,但是有關如何找到第一個到達目標的想法?

由於提前,
多利安找到第一個用戶,以達到目標

+2

我們真的NE編輯比這更多的信息(數據庫模式等),所以你可能想用必要的更新你的問題。 – 2011-04-16 15:01:22

+0

更多信息添加 - 有用戶(通過ID和姓名)與領域(的action_id,USER_ID,ACTION_DATE,number_of_points_earned_for_action)操作的表與另一個。 我希望這可以幫助。 – 2011-04-16 16:30:41

回答

0

在MySQL表創建一個列,即先。

滿足一定條件的第一查詢時,說點= 500,將在表中的「第一」值設置爲1的每個其他的查詢將具有FIRST設置爲0

實施例:

ID | USER | POINTS | FIRST 
1 dor 480  0 
2 tim 500  1 
3 mit 200  0 


然後搜索FIRST = 1

$q = mysql_query("SELECT * FROM table WHERE FIRST='1'"); 
1

創建計算累積記分分值的查詢。然後你只需要最低日期排序,累積點數得分至少100

1

你可以創建一個緩存表(此表中的數據是完全多餘的,因此它可以被丟棄並重新創建根據需要)

在此表中存儲用戶(ID),即添加指向該用戶平衡每一個「事件」的日期和巴倫斯本身......像銀行存款餘額爲每個用戶...

表可從存儲的事件重新創建/因爲它的行動是一筆歷史由用戶進行分組...或者它可以與每一個新的事件/行動進行更新......

相關問題