如何修复此 mySQL 代码以显示正确的输出?
How to fix this mySQL code so as to show the correct output?
我的mySQLtable如下
id - hash - page - timestamp
1 - ig35sdf89 - page1 - 2015-05-06 12:03:54
2 - ig35sdf89 - page2 - 2015-05-06 12:06:54
3 - ig35sdf89 - page1 - 2015-05-06 12:08:54
4 - xgd98rgf - page1 - 2015-05-06 12:10:54
5 - aaaat43gr - page3 - 2015-05-06 12:12:54
我的问题是要使用什么 mySQL 查询来显示类似我将在其中按时间戳显示每个哈希顺序的路径的内容:
ig35sdf89 - page1 - 2015-05-06 12:08:54
- page2 - 2015-05-06 12:03:54
- page1 - 2015-05-06 12:06:54
xgd98rgf - page1 - 2015-05-06 12:10:54
aaaat43gr - page3 - 2015-05-06 12:12:54
这是到目前为止的代码
$sql= mysql_query("SELECT IF(@tempHash = `hash`, '', @tempHash := `hash`) `hash`, page, `timestamp`
FROM behaviour
JOIN (SELECT @tempHash := '')s
ORDER BY `timestamp`
");
while($row = mysql_fetch_array($sql)) {
echo '<tr><td>'.$row[hash].'</td><td>'.$row[page].'</td><td>'.$row[timestamp].'</td></tr>';
}
问题是输出即使运行了,也有错误。 hash abc
的路径(页面)被拆分。我的意思是它显示来自 abc
哈希的许多页面,然后用户 xxx123
显示 xxx123
页面,然后它继续显示用户 abc
。我想要的是 abc
页的完整列表、时间戳,然后继续 xxx123
等等。
我注意到拆分是因为时间戳。
如果 user1
有一个页面时间戳 14:10:12 并且下一个 14:10:30 和 user2
有 14:10:20 它将打破 [=21= 的路径], 显示 user2
然后继续 user1
.
<?php
$sql= mysql_query("SELECT IF(@tempHash = `hash`, '', @tempHash := `hash`) `hash`, page, `timestamp`
FROM behaviour
JOIN (SELECT @tempHash := '')s
ORDER BY `hash`
");
$xhash = "";
while($row = mysql_fetch_array($sql)) {
if($xhash != $row['hash']){
echo '<tr><td>'.$row[hash].'</td><td>'.$row[page].'</td><td>'.$row[timestamp].'</td></tr>';
}else{
echo '<tr><td></td><td>'.$row[page].'</td><td>'.$row[timestamp].'</td></tr>';
}
$xhash = $row['hash'];
}
?>
我的mySQLtable如下
id - hash - page - timestamp
1 - ig35sdf89 - page1 - 2015-05-06 12:03:54
2 - ig35sdf89 - page2 - 2015-05-06 12:06:54
3 - ig35sdf89 - page1 - 2015-05-06 12:08:54
4 - xgd98rgf - page1 - 2015-05-06 12:10:54
5 - aaaat43gr - page3 - 2015-05-06 12:12:54
我的问题是要使用什么 mySQL 查询来显示类似我将在其中按时间戳显示每个哈希顺序的路径的内容:
ig35sdf89 - page1 - 2015-05-06 12:08:54
- page2 - 2015-05-06 12:03:54
- page1 - 2015-05-06 12:06:54
xgd98rgf - page1 - 2015-05-06 12:10:54
aaaat43gr - page3 - 2015-05-06 12:12:54
这是到目前为止的代码
$sql= mysql_query("SELECT IF(@tempHash = `hash`, '', @tempHash := `hash`) `hash`, page, `timestamp`
FROM behaviour
JOIN (SELECT @tempHash := '')s
ORDER BY `timestamp`
");
while($row = mysql_fetch_array($sql)) {
echo '<tr><td>'.$row[hash].'</td><td>'.$row[page].'</td><td>'.$row[timestamp].'</td></tr>';
}
问题是输出即使运行了,也有错误。 hash abc
的路径(页面)被拆分。我的意思是它显示来自 abc
哈希的许多页面,然后用户 xxx123
显示 xxx123
页面,然后它继续显示用户 abc
。我想要的是 abc
页的完整列表、时间戳,然后继续 xxx123
等等。
我注意到拆分是因为时间戳。
如果 user1
有一个页面时间戳 14:10:12 并且下一个 14:10:30 和 user2
有 14:10:20 它将打破 [=21= 的路径], 显示 user2
然后继续 user1
.
<?php
$sql= mysql_query("SELECT IF(@tempHash = `hash`, '', @tempHash := `hash`) `hash`, page, `timestamp`
FROM behaviour
JOIN (SELECT @tempHash := '')s
ORDER BY `hash`
");
$xhash = "";
while($row = mysql_fetch_array($sql)) {
if($xhash != $row['hash']){
echo '<tr><td>'.$row[hash].'</td><td>'.$row[page].'</td><td>'.$row[timestamp].'</td></tr>';
}else{
echo '<tr><td></td><td>'.$row[page].'</td><td>'.$row[timestamp].'</td></tr>';
}
$xhash = $row['hash'];
}
?>