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

私がやりたいのは、テーブルを呼び出して、過去24時間に投票したアイテムのみについて、テーブル2のすべてのデータを表示し、投票で並べ替えることです。これは、TIME <24時間で投票を合計してから、他のデータベースに右参加(?)する必要があることを意味します。わからない、どうすればいいのかわからない。何か提案はありますか?

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 に答える