2

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

4

1 回答 1

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  
于 2011-05-31T17:20:43.977 回答