PHP / MYSQLi - 显示上次日期查询

时间:2012-07-18 23:30:10

标签: php mysql mysqli

我的数据库表有5列:'id','date_visited','page_title','ip'和'total_views'。 我无法显示ORDER BY'date_visited'。 我的PHP查询是:

<?php
[...]
$query = "SELECT *,count(*) FROM table WHERE ip GROUP BY page_title";
$result = mysqli_query($link,$query) or die(mysqli_error($link). "Q=".$query);
if(!$result == 0) {
    while ($row = mysqli_fetch_array($result)) {
        $dataList_br .= '<tr>
                            <td>' .$row['date_visited']. '</td>
                            <td>' .$row['page_title']. '</td>
                            <td>' .$row['count(*)']. '</td>
                        </tr>';
    }
} else {
    $dataList_br .= '<p class="warning">No data found in database.</p>';
}
?>

输出时,显示[日期] [页面标题]和[总视图]。 请有人帮助我,如何显示查询的最后日期,而不是显示访问该页面的第一天。

谢谢。

3 个答案:

答案 0 :(得分:2)

MySQL对GROUP BY的内容很宽容,如果列不在GROUP BY但是SELECT,则会为该组稍微任意返回一行。在您的情况下,它只是为您提供了每个组的第一行(最低日期)。

获取每个组MAX(date_visited)的行的page_name,并将其与主表连接,以从主表中提取剩余的列。

SELECT
  table.id,
  table.ip,
  table.total_views,
  maxdates.date_visited,
  maxdates.page_name,
  maxdates.thecount
FROM
  table
  JOIN (
    /* Subquery returns the aggregates to join against 
       the main table so other columns can be pulled in */
    SELECT 
      page_title, 
      MAX(date_visited) AS maxdate, 
      COUNT(*) AS thecount 
    FROM table 
    GROUP BY page_title
  ) maxdates
    ON table.page_name = maxdates.page_name 
       AND table.date_visited = maxdates.maxdate

答案 1 :(得分:0)

您想使用ORDER BY。像这样:

$query = "SELECT *, count(*) 
            FROM table 
           WHERE ip 
        GROUP BY page_title 
        ORDER BY date_visited ASC";

答案 2 :(得分:0)

请尝试使用“ORDER BY”:

$query = "SELECT date_visited, page_title,count(*) FROM table WHERE ip ORDER BY page_title ASC";
$result = mysqli_query($link,$query) or die(mysqli_error($link). "Q=".$query);
if(!$result == 0) {
    while ($row = mysqli_fetch_array($result)) {
        $dataList_br .= '<tr>
                            <td>' .$row['date_visited']. '</td>
                            <td>' .$row['page_title']. '</td>
                            <td>' .$row['count(*)']. '</td>
                        </tr>';
    }
} else {
    $dataList_br .= '<p class="warning">No data found in database.</p>';
}