所以我有2个表:的SQLite - >寻找两个最接近的点到两个不同点
route(#id)
step(#id,route_id,lat,lng,sequence_order)
而且2 GPS坐标:M1(LAT1,lng1)M2(LAT2,lng2)。
所以,我想找到所有的路线,从2个GPS坐标的每个至少有一步距离1.0英里的距离,并且按升序排列。因此,如果我找到Route#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
但它只是崩溃。
有什么想法?
似乎每个'Route'都有一些序列化的'Steps'。但是什么是表'ZSTEP'?它看起来像你想要一个自我加入表“步骤”。也许真正的桌子被命名为'ZSTEP',并且为了这个问题的目的您将其名称更改为'Step',但忘记更改第二个实例?我在想这个太多了吗? ;) – onedaywhen 2010-07-16 11:26:32
其实ZSTEP是我发布时忘记编辑的真名。 – Julien 2010-07-16 11:32:55