2013-07-04 37 views
0

我正在開發基於時間的測驗項目,使用PHP和MySQL並存儲結果,如下表所示。PHP和MySQL基於時間的測驗應用程序

表:得分

sid |Question_ID|answer |is_correct|User_ID|score|score_calculated|time_taken 
1 |10   |Manager|Y   | 1 |200 | 0    |3.2 
2 |10   |Emp |N   | 2 |200 | 0    |2.4 
3 |10   |Manager|Y   | 3 |200 | 0    |6.5 
4 |10   |Other |N   | 4 |200 | 0    |8.3 
5 |11   |Yellow |N   | 1 |300 | 0    |2.3 
5 |11   |green |N   | 2 |300 | 0    |5.8 
6 |11   |Red |Y   | 3 |300 | 0    |6.4 
7 |11   |Red |Y   | 4 |300 | 0    |9.1 

得分列包含標記爲每個問題

分數計算基於:

    使用最小時間
  • 正確答案= 100%
  • 使用正確答案第二個最短時間= 75%
  • 使用第三最小時間正確答案= 50%
  • 其他正確答案= 25%
  • 其他不正確的答案= 0

上述計算值需要對** 'score_calculated' 被更新**領域。 任何人都可以請建議一個查詢或方法來解決評分過程?

+0

在插入結果之前在php中進行計算?你可以在sql中寫一個很長的醜陋的if()/ case'結構,但它會很難維護。 –

+0

@VaibhavDesai @ whizzzkid:謝謝你的回覆。這些計算只能在四個條目到達後才能完成,因爲我們需要獲得第一個最短時間,第二個最短時間等。您能否以視圖或觸發器爲例來點亮我。再次感謝。 –

+0

@whizzzkid請參閱上面的評論.. –

回答

0

通過Ranking記錄解決了問題time_taken。我將在稍後編輯該查詢...

1

解決您問題的最佳方式是MysqlTrigger。 在每次提交答案時(插入後),都可以調用觸發器。

+0

@ mikecurl91這些計算只有在四個條目到達後才能完成,因爲我們需要獲得第一個最短時間,第二個最短時間等。請給我一個例子 –

相關問題