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)

したがって、投稿 ID 16 の行が 4 つある場合でも、その IP アドレスは既にそれを認識しているため、1 は無視されます。次に、ほとんどのビューで並べ替えられ、タイムスタンプで並べ替えられます。

これは私が現在試していることです(機能していません):

$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)'] .")
    ");
}
4

1 に答える 1

1

クエリは機能します:http ://sqlfiddle.com/#!2/95ee5/1 正しくないのは、タイムスタンプで並べ替えたいということです。どのタイムスタンプですか?投稿のタイムスタンプまたはビューの最後のタイムスタンプ?それとも、ビューの平均タイムスタンプですか?

于 2013-03-02T23:53:21.520 に答える