2013-03-02 27 views
0

我試圖找出如何列出哪些帖子已被瀏覽最多的,尤其是前5需要幫助數據庫排序表格爲最多查看

viewid | postid | ip  | dateline 

    1 | 16 | 1.1.1.1 | 987654 
    2 | 12 | 1.1.1.1 | 987655 
    3 | 15 | 2.2.2.2 | 987656 
    4 | 16 | 2.2.2.2 | 987657 
    5 | 16 | 3.3.3.3 | 987658 
    6 | 18 | 1.1.1.1 | 987659 
    7 | 16 | 1.1.1.1 | 987660 
    8 | 12 | 4.4.4.4 | 987661 

我想打印出以下:

Post ID - 16 (3 views) 
Post ID - 12 (2 views) 
Post ID - 15 (1 view) 
Post ID - 18 (1 view) 

因此,即使有4行與帖子ID 16,它忽略1,因爲該IP地址已經看到它。然後按大多數視圖排序,然後按時間戳排序。

這是我目前正在嘗試(不工作):

$query_ranks_views = mysql_query("SELECT postid, COUNT(DISTINCT ip) AS num FROM views WHERE postid > '0' GROUP BY postid ORDER BY COUNT('DISTINCT ip') DESC LIMIT 5"); 
while($ranks_views = mysql_fetch_array($query_ranks_views)){ 
    echo(" 
     $ranks_views[postid] (". $ranks_views['COUNT(DISTINCT ip)'] .") 
    "); 
} 
+0

SQL部分似乎沒問題。問題是什麼?你作爲輸出得到什麼? – 2013-03-02 23:52:38

回答

1

查詢不工作:http://sqlfiddle.com/#!2/95ee5/1 什麼是不正確的是要通過時間戳訂購。哪個時間戳?帖子的時間戳或視圖的最後一個時間戳?或者,也許平均時間戳的觀點?

+0

明白了。謝謝。 – 2013-03-03 00:02:14

+0

您已將別名視爲「num」,請嘗試$ ranks_views ['num']。 – 2013-03-03 00:03:06