尋找一些關於完成此操作的最佳方式的建議。我已經嘗試過幾個堆棧溢出問題的聯盟,連接和別名示例 - 沒有人似乎讓我想要去我的地方沒有錯。我想我一直在尋找解決這個錯誤的方式。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