我的数据库表有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>';
}
?>
输出时,显示[日期] [页面标题]和[总视图]。 请有人帮助我,如何显示查询的最后日期,而不是显示访问该页面的第一天。
谢谢。
答案 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>';
}