寻找一些关于完成此操作的最佳方式的建议。我已经尝试过几个堆栈溢出问题的联盟,连接和别名示例 - 没有人似乎让我想要去我的地方没有错。我想我一直在寻找解决这个错误的方式。MySQL在任何范围内的第一次占用范围内计数结果
我有一个表记录我们用户的所有活动。每个日志都包含一个带有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(时间戳)在上面抓住范围内第一时间标记 - 我想GRA b第一个时间戳,不管范围。
我该怎么做?
TetonSig更换#eventlog,我肯定得到生成一个临时表的概念,但是由于多个用户可能同时访问数据而离开了这个概念,我必须以某种方式将其与用户配置文件或会话绑定。无论如何不添加表格来做到这一点? – user1115569 2011-12-25 20:56:50
临时表仅用于此处的示例,用于演示一些示例数据。你可以用你现有的表执行此操作,只需将#eventlog替换为你的表名即可。 – TetonSig 2011-12-25 21:01:11
TetonSig,我只是把它带回到实验室,并能够创建到底需要什么。我仍在努力理解你所提出的语法,但是这使我的学习时速达到了每小时几千英里。谢谢! – user1115569 2011-12-25 23:35:29