我将访问次数和用户时间保存在我的页面中。 mySQL如下所示:
id - user - page - timestamp
340 - 1 - page1 - 2009-05-18 22:11:11
339 - 1 - page3 - 2009-05-18 22:10:01
337 - 1 - page2 - 2009-05-18 22:06:00
336 - 1 - page1 - 2009-05-18 22:05:10
在上面的示例中,用户1首先访问page1,然后访问page2,page3,再次访问page1。
我现在使用的sql查询如下:
结果是:
page1 (last page)
page3
page2 (first page)
但事实上,正确的输出应该是
page1 (last page)
page3
page2
page1 (first page)
问题在于,如果用户访问同一页面,则不会显示访问特定页面的所有时间,但会将其移到最顶层。所以路径不正确。
我应该对SQL查询做出哪些更改才能解决此问题?
答案 0 :(得分:0)
您应该删除page
中的group by
列。
答案 1 :(得分:0)
问题在于您按页分组,因此多个访问将按日期折叠。
同时删除最大(时间戳)和按日期分组......它们使双重访问消失
SELECT
page,
`timestamp`
from behaviour
WHERE `hash` = 'user1'
order by `timestamp` desc
答案 2 :(得分:0)
显示的结果是正确的(三个结果)。
如果我理解正确,您可以使用数据保存用户ID。
在您的示例中,前3次访问记录了user.id = 1
,然后记录了user.id = 2
。如果您尝试排队user 1
访问记录,则无法获取最后一个。因此,你得到“错误的”输出(这是正确的,但我认为这是错误的)
您必须确保user.id
与用户表的 pimery密钥 相关才能获得正确的输出
更新1:
好的,我再次看到了更新。这一次,如果您将结果分组为一个 属性 ,则此 属性 中的相同值将仅显示一旦。您不需要group by page
队列。
我认为最好按user
或date
进行分组(除非您愿意,否则不需要日期)
答案 3 :(得分:0)
我想问题是当你按页面ID对结果进行分组时。尝试省略并检查结果。
答案 4 :(得分:0)
结果不应该是
根据时间
如果是这样的话,这将起作用
select page, timestamp = min(timestamp) from behaviour group by page,timestamp