我發現了很多關於計算器有用的信息,但一點點仍然缺少解決了以下問題:使用MySQL計算兩個表之間的每月用戶內核?
我有兩個表userscores和userpoints這樣的:
#table userscores (saves userpoints each month)
date userid points
2012-05-01 1 23
2012-06-01 1 34
#table userpoints (recent points)
userid points
1 23
2 10
3 15
我能找出如何計算recen之間的差異采用t userpoints和存儲userpoints(來自表「userscores」)當前月的:
SELECT userpoints.userid, userpoints.points - userscores.points AS mpoints
FROM `userpoints`,`userscores`
WHERE userpoints.userid=userscores.userid
AND YEAR(userscores.date) = YEAR(CURDATE())
AND MONTH(userscores.date) = MONTH(CURDATE())
AND userpoints.userid != ".$adminID."
ORDER BY mpoints DESC;"
然而,該查詢僅來自兩個表進行比較的用戶ID和忽視存在於表userpoints的用戶ID和但不存在於表用戶核心中。
應該修改查詢,以便新創建的用戶標識(在表用戶標記中)也被視爲分數。
我發現瞭如何查詢以獲得不表userscores存在用戶ID:
SELECT userpoints.userid FROM `userpoints`
WHERE userpoints.userid
NOT IN(SELECT qa_userscores.userid FROM `qa_userscores`)
現在我必須結合了但嘗試以下不工作:
SELECT userpoints.userid, userpoints.points - userscores.points AS mpoints
FROM `userpoints`,`userscores`
WHERE (
userpoints.userid = userscores.userid
AND YEAR(userscores.date) = YEAR(CURDATE())
AND MONTH(userscores.date) = MONTH(CURDATE())
AND userpoints.userid != ".$adminID."
)
OR (
userpoints.userid IN(SELECT userpoints.userid FROM `userpoints`
WHERE userpoints.userid
NOT IN(SELECT DISTINCT userscores.userid FROM `userscores`))
)
ORDER BY mpoints DESC;
任何幫助表示讚賞。
完美,非常感謝srini.venigalla!我將在我目前爲www.question2answer.org –
寫的插件中讚揚你哦!我很榮幸,先生! –