0
我正在嘗試根據用戶的點數來計算用戶的點數,這些用戶的點數與VS的值和VS在一週內可以擁有的最大數量有關。SQL SUM關閉參數
這是一個日記系統。他們每天都進入他們參與的所有活動。IE:騎自行車。他們每天都可以登錄,但我們只希望每個活動每週給他們X點。
的表格:
點 - 保存每一天,每一個活動(VALUEID)的條目(日記帳分錄)
價值觀 - 包含所有可能的活動,他們可以選擇
用戶 - 擁有參與日誌
valueID, valueName, value, maxWeekValue
1, Biking, 1, 6
pointID, userID, valueID, date_created
1, 16, 1, 2013-05-19
2, 16, 1, 2013-05-20
3, 16, 1, 2013-05-21
4, 16, 1, 2013-05-22
5, 16, 1, 2013-05-23
6, 16, 1, 2013-05-24
7, 16, 1, 2013-05-25
userID, name
16, Braden
雜誌用戶: 5/19-5/25 =我騎自行車,每天記錄。我一個星期內只能得到6的最大點數,所以它應該讀取我的總點數爲6.
我需要一個SQL語句,它將採取每個帖子,按值分組,給出值*條目的總和如果< maxWeekValue。
我可以在PHP中做到這一點。但我知道在mySQL中有這樣一種更簡潔的方法。
這是我到目前爲止有:
SELECT p.valueID,p.date_created,v.valueName,v.value,v.maxWeekValue,SUM(v.value) as sumd
FROM `points` AS p
INNER JOIN `users` AS u ON u.id = p.userID
INNER JOIN `values` AS v ON p.valueID = v.valueID
WHERE p.date_created
BETWEEN SUBDATE(curdate(), 7)
AND curdate()
這正確地計算總和,但沒有條件邏輯將其限制在每週包括maxValue。
在我跳過之前,你可以使用任何一個sql嚮導提供一些幫助,只需用PHP來完成它?先謝謝你!
這似乎是工作真的很好!謝謝!考慮以下幾點:我有騎自行車,我有游泳項目。這只是返回我的自行車項目的一排。我怎樣才能得到它分組每個活動,並給我一個像這樣回來的行條目? – bradenkeith
您必須將所有要組合的列組合,而不是彙總列。我不太清楚你想要什麼,但嘗試類似的東西。將下面的代碼添加到查詢的最後:GROUP BY p.valueID,p.date_created,v.valueName,v.value,v.maxWeekValue – Rodrigo
正確的你! GROUP BY v.valueID在最後解決了它。非常感謝!! – bradenkeith