0

我有很多来自 GPS 设备的记录,我需要在地图上显示为路线。当记录之间的时间不超过 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 需要形成一条路线。

我正在尝试为此编写查询,但我被卡住了。我设法在数据库之后执行操作,但这是您不应该想要的(您必须检索所有记录等)

有人对此有解决方案吗?

4

1 回答 1

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。

于 2013-03-20T07:14:54.087 回答