所以我有两张桌子:
route(#id)
step(#id,route_id,lat,lng,sequence_order)
2个GPS坐标:M1(lat1,lng1)M2(lat2,lng2)。
所以我想找到所有距离这里1.0英里至少近一步的路线
每个
以升序排列的两个GPS坐标。
因此,如果我找到25号路线,它在距m1 0.4英里处有一个步骤s1,在距m2 0.2英里处有一个步骤s2,那么只有当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
但它只是崩溃了。
有什么想法吗?