SQLite -> поиск двух ближайших точек к двум различным точкам - PullRequest
0 голосов
/ 16 июля 2010

Итак, у меня есть 2 таблицы:

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

И 2 GPS-координаты: M1 (широта, lng1), M2 (широта, lng2).

Итак, я хочу найти все маршруты, которые по крайней мере на один шаг ближе, чем 1,0 миля от каждого из 2-х координат GPS в порядке возрастания последовательности.

Так что, если я найду маршрут № 25, который имеет шаг S1 в 0,4 милях от M1 и шаг S2 в 0,2 милях от M2, он должен совпадать, только если порядковый номер 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 Ответ

1 голос
/ 16 июля 2010

Вы, вероятно, хотите

ORDER BY d1, d2

в качестве вашего заказа по предложению.Что за авария?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...