使用PHP和MySQL,我试图在一段时间内(24小时,1周,1年等)显示投票最多的项目。当某人对某个项目进行投票时,表格会记录用户,项目ID,投票和时间,如下所示:
表1
username | itemid | vote | time
asdf | 127 | 1 | 1306726126
asdf | 124 | -1 | 1306726123
bob | 127 | 1 | 1306726129
bob | 124 | 1 | 1306726123
现在,我有另一个包含项目详细信息的表格。
表2
itemid | name | category | date | etc
我想要做的是调用一张表来显示表2 中的所有数据,仅显示过去24小时内有投票的项目,并按投票排序。这意味着我需要在TIME<时投票。 24小时,然后RIGHT JOIN(?)到我的其他数据库?我不知道,我很难弄清楚我应该怎么做。有什么建议吗?
答案 0 :(得分:1)
这样的事情应该有效。
SELECT SUM(Table1.vote) as votes, Table2.* FROM Table2
LEFT JOIN Table1 ON Table1.itemid=Table2.itemid
WHERE Table1.`time`>=DATE_SUB(Table1.`time`, INTERVAL 24 HOUR)
GROUP BY Table1.itemid
ORDER BY Table1.votes DESC