SQLite - >找到两个最接近两个点的点

时间:2010-07-16 10:11:27

标签: sql sqlite

所以我有两张桌子:

route(#id)
step(#id,route_id,lat,lng,sequence_order)

2个GPS坐标:M1(lat1,lng1)M2(lat2,lng2)。

所以我想找到距离2个GPS坐标的每个至少1.0英里的所有路线,并按升序排列。

因此,如果我发现路线#25的步骤S1距离M1 0.4英里,步骤S2距离M2 0.2英里,则仅当S1的序列号低于S2的序列号时才匹配。它有意义吗?

假设我添加了一个计算距离的函数,我可以很容易地用这个请求来完成:

SELECT r.id,s1.lat,s1.lng,s2.lat,s2.lng,distance(s1.lat,s1.lng,lat1,lng1) as d1,distance(s2.lat,s2.lng,lat2,lng2) as d2 FROM route r
INNER JOIN step s1 ON r.id = s1.route_id
INNER JOIN step s2 ON r.id = s2.route_id AND s1.sequence_order < s2.sequence_order
WHERE d1<1.0
AND d2<1.0 

我想要的行为是,只保留最接近的坐标(s1.lat,s1.lng)和(s2.lat,s2.lng)到我的点。所以我认为我可以这样做:

ORDER BY d1
ORDER BY d2
GROUP BY r.id

但它只是崩溃了。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可能想要

ORDER BY d1, d2

作为您的order by子句。无论如何,崩溃是什么?