2014-10-28 88 views
0

我想查看過去24小時內發佈的最受歡迎的前10個主題。如果網站從過去24小時內獲得少於10個主題,則必須回顧前一天剩餘的最多觀看主題。過去24小時內發表的最多人查看的主題

我以unix格式在數據庫中存儲時間,視圖是整數。我想知道sql查詢以上述方式獲取。

$time_start = time(U); 
$time_end = strtotime('-1 day', $time_start); 
$query = mysql_query("SELECT * FROM topics where topic_active = 'Yes' and topic_type = 'topic' and topic_time BETWEEN $time_start and $time_end ORDER BY topic_views DESC LIMIT 10"); 

topic_time是存儲在數據庫中的UNIX格式一樣1411657030

從我只能從過去24小時內取指最多觀看上面的查詢主題發佈的時間,如果沒有話題後,這將是空白的。什麼是前一天獲取該主題的查詢。

+2

爲什麼不只是做一個'order by topic_time desc limit 10' – 2014-10-28 09:41:41

+0

@ AbhikChakraborty,如果我按順序做,大多數觀點不會出現 – user3477550 2014-10-28 09:47:05

+1

很久很久以前,我們停止使用PHP的mysql_ API。加入我們! – Strawberry 2014-10-28 09:50:11

回答

0

使用一些這樣的事,並請讓我知道它的作品

SELECT *, from_unixtime(topic_time/1000, '%Y-%m-%d %H:%i') FROM topics 
WHERE topic_time >= unix_timestamp(CURRENT_TIMESTAMP - INTERVAL 1 DAY) * 1000 

請查看以下鏈接

selecting rows in the last 5 minutes using unix time stamp

+0

但它是如何排序頂部的最大的觀點?它給出了空白的結果。 – user3477550 2014-10-28 09:49:32

+0

你的意思是結果爲空或它沒有排序 – Choco 2014-10-28 09:51:28

+0

你的topic_time類型是什麼時間戳? – Choco 2014-10-28 09:52:29

0

我覺得像這樣的工作...

SELECT * 
    , 1 x 
    FROM topics 
WHERE topic_active = 'Yes' 
    AND topic_type = 'topic' 
    AND topic_created > UNIX_TIMESTAMP(NOW())-86400 
UNION 
SELECT * 
    , 2 
    FROM topics 
WHERE topic_active = 'Yes' 
    AND topic_type = 'topic' 
    AND topic_created > UNIX_TIMESTAMP(NOW())-172800 
ORDER 
    BY x 
    , topic_views 
LIMIT 10; 
相關問題