2010-03-05 23 views
0

我有一個table,我應該算,如果一個用戶已經達到數penalities像3,因此如果用戶達到或超過3分,他被禁止:數列值的總和在SELECT語句中

table_warnings 
- id 
- user_id 
- warning 
- warning_date 

id user_id  warning warning_date 
1  5478  1   2010-02-25 12:59:00 
2  5478  1   2010-02-28 08:27:00 
3  5478  2   2010-03-01 22:44:11 

我已經started this question,其中KM幫助過我的用戶以優良的解決方案SELECT像這樣的:

SELECT COUNT(warning) 
FROM table_warnings AS w 
INNER JOIN table_users AS u 
ON w.user_id = u.user_id 
WHERE w.user_id = 5478 AND warning_date >= '2010-02-05 12:59:00' 
HAVING COUNT(warning) >= 3 

我能找到一個SELECT來檢索用戶多少刑罰點有辦法在過去的30天內得到了什麼?

+0

'warn_penalty'字段來自哪裏?您不會在示例數據中顯示它。它和'warning'一樣嗎? – 2010-03-05 20:04:30

+0

對不起,我的錯誤 – vitto 2010-03-05 20:13:13

回答

5

什麼是「warn_penalty」欄。我可以認爲它和「警告」一樣嗎?如果是這樣,只需將COUNT()更改爲SUM()。通過一些額外的修復來消除第二個表格:

SELECT user_id, SUM(warning) 
FROM table_warnings 
WHERE warning_date >= '2010-02-05 12:59:00' 
GROUP BY user_id 
HAVING SUM(warning) >= 3 

將返回所有被禁止的用戶。

或者,如果你有一個USER_ID並希望知道它是否禁止或不:

SELECT SUM(warning) 
FROM table_warnings 
WHERE user_id = 5478 AND warning_date >= '2010-02-05 12:59:00' 

和檢查結果。

+0

確切的,謝謝你的幫助 – vitto 2010-03-05 20:11:45