2009-07-25 103 views
1

我有一張帶日期戳E.g(1241037505)的表格。還有一個包含多個視圖的列。選擇熱門瀏覽最近7天

數據標記與創建時相似。

所以我想選擇過去一週內排名最高的主題。

我該怎麼做?

回答

0
SELECT * FROM table WHERE Date_Created > (7 days ago value) ORDER BY Hits LIMIT 0,100 

,或者你可以使用這個(每WishCow的答案)

SELECT * FROM table WHERE Date_Created > SUBDATE(NOW(), '7 day') ORDER BY Hits LIMIT 0,100 
+0

什麼是7天前的價值? – 2009-07-25 22:15:15

+0

@Ben Shelock,(現在值) - (7 * 24 * 60 * 60)。 在PHP它會是時間() - (7 * 24 * 60 * 60) – Nathan 2009-07-25 22:26:12

+0

你需要計算。通過PHP,你可以使用time() - 604800。 – 2009-07-25 22:26:30

1

您目前正在跟蹤的數據是不會讓你選擇在上週查看頂部。它會向您顯示始終瀏覽的頂部視圖,或者上週創建的觀看次數最多的內容。如果兩週前創建了某些內容,但在上週您看到的內容比其他任何內容都要多,那麼您無法根據所跟蹤的數據確定它。我可以看到的一種做法是跟蹤每個內容項在一週中的每一天獲得的點擊次數。

create table daily_hits { 
    cid integer, -- content id points to the table you already have 
    dotw smallint, -- 0-6 or similar 
    hits integer 
    PRIMARY KEY (cid, dotw) 
} 

每當您增加內容項目的點擊次數時,您還將更新給定內容ID和星期幾的daily_hits表格。您需要將當前日期/時間轉換爲一週中某天的功能。 MySql爲此提供了DAYOFWEEK

若要在上週觀看次數最多的,你可以查詢這樣的:

SELECT CID,SUM(點擊)FROM daily_hits GROUP BY CID ORDER BY SUM(點擊)DESC

您需要某些類型的計劃作業會在午夜刪除當前星期幾,因此您不會永久累積,並且基本上會執行當前表格的匹配列上發生的相同累計。

3

試試這個:

SELECT * WHERE 
DATEDIFF(NOW(),created_date) < 7