Я использую следующий запрос, чтобы получить следующие локальные события, используя их местоположение. Моя база данных растет, и у меня есть события со всей Европы. Таким образом, в основном, запрос вычисляет расстояния от событий двух разных стран (например, Испании и Германии), что действительно не полезно, так как я ищу следующие события в пределах 20 км.Ограничение количества местоположений GPS в запросе MySQL
# latitude & longitude are the fields in DB
# 43.57 & 3.85 are given values representing the local test point
SELECT (6366 * ACOS(COS(RADIANS(43.57)) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS(3.85)) + SIN(RADIANS(43.57)) * SIN(RADIANS(latitude)))) dist
FROM events
HAVING dist >0 AND dist <=20
ORDER BY event_time ASC
LIMIT 0 , 5
Так в основном, этот запрос будет получить все расстояния всех событий, прежде чем быть в состоянии использовать HAVING
.
Есть ли лучший способ?
@OllieJones Принятый ответ на вопрос, который вы связали, - это именно то, что OP уже использует. Этот вопрос нуждается в улучшении. –
@HoboSapiens, правда, но мой ответ на этот вопрос, а не принятый, точно решает его вопрос. Я не хотел набирать его снова. Здесь написано. http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/ –