【发布时间】:2012-01-27 17:13:00
【问题描述】:
寻找一些关于完成此任务的最佳方法的建议。我已经尝试了一些 Stack Overflow 问题中的 Unions、Joins 和 Alias 示例 - 似乎没有一个能让我到达我想去的地方,这不是他们的错。我想我只是想以错误的方式解决这个问题。
我有一张表格记录了我们用户的所有活动。每个日志包含一个带有 ID 的列和另一个带有 TIMESTAMP 的列。没有说明事件类型的列。
我要做的是在一个范围内抓取计数并附加一个带有激活日期(首次访问)的虚拟列,无论它是否在该范围内。对此的商业案例是,我希望有报告显示用户在某个范围内处于活动状态、他们的激活日期以及该范围内的事件数量。
它的 HTML 输出如下所示: 用户/范围内的总访问次数/首次访问(范围内或不在范围内)/最近访问次数(范围内)
我之所以能走到这一步,是因为这样做:
$result = mysql_query("
SELECT user, MIN(timestamp), MAX(timestamp), count(user)
AS tagCount FROM " . $table . "
WHERE date(timestamp) BETWEEN '" . $startdate . "' AND '" . $enddate . "'
GROUP BY user
ORDER BY " . $orderby . " " . $order) or die(mysql_error());
然后我循环:
$i = 1;
while($row = mysql_fetch_array($result)){
$user_name = str_replace("www.", "", $row['user']); // removing www from usernames
if( $i % 2 != 0) // used for alternating row colors
$iclass = "row";
else
$iclass = "row-bg";
echo "<div class=\"" . $iclass . "\"><div class=\"number\">" . $i . "</div><div class=\"number\">" . $row['tagCount'] . "</div><div class=\"name\">" . "<a href=\"http://" . $row['user'] . "\" target=\"_blank\">" . $server_name . "</a>" . "</div>" . "<div class=\"first\">" . $row['MIN(timestamp)'] . "</div><div class=\"recent\">" . $row['MAX(timestamp)'] . "</div></div>";
$i++;
}
上面的 MIN(timestamp) 抓取范围内的第一个时间戳 - 我想抓取第一个时间戳而不考虑范围。
我该怎么做?
【问题讨论】:
标签: php mysql select join union