2013-03-20 53 views
0

我有很多来自GPS设备的记录,我需要在地图上显示路线。当记录之间的时间不超过5分钟时,记录将合并一条路线。如何在每条记录之间的间隔不超过5分钟的轨道中选择记录?

比方说我的数据库看起来像:

id  date 
------- --------------------- 
1  2013-01-10 11:00:00.0 
2  2013-01-10 11:01:15.0 
3  2013-01-10 11:02:15.0 
4  2013-01-10 11:03:15.0 
5  2013-01-10 11:04:45.0 
6  2013-01-10 11:15:00.0 
7  2013-01-10 12:00:00.0 
8  2013-01-10 12:00:50.0 

在这种情况下,记录1-5和7-8需要形成的路线。

我想写一个查询,但我卡住了。我设法在数据库后执行操作,但这是你不应该想要的(你必须检索所有记录等)。

有人有解决方案吗?

回答

1

你可以通过简单地比较其继任者的每个条目

SELECT 
    f.ID AS from_ID, 
    t.ID AS to_ID 
FROM 
    GPSTable AS f 
JOIN GPSTable AS t 
    ON f.ID = t.ID-1 
WHERE 
    TIMESTAMPDIFF(SECOND, f.Date, t.Date) < 300 
; 

如果存在一个条目(A,B)和另一个项目(B,C)获得单独的链段,你知道你有一个路径从(A-> B-> C)。

下一步就是收集所有这些路径段。这可以通过递归查询来完成,但我不熟悉mySQL。

+0

@GeorgeBoot:感谢您更正如何计算mySQL中两个日期时间值之间的差异。 – alzaimar 2013-03-20 09:08:28

相关问题