使用SUM显示基于时间范围的数据

时间:2011-05-31 16:58:37

标签: php mysql database vote

使用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(?)到我的其他数据库?我不知道,我很难弄清楚我应该怎么做。有什么建议吗?

1 个答案:

答案 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