SELECT
id,
(3959 * acos(cos(radians(51.509980)) * cos(radians(lat)) * cos(radians(lng) - radians(-0.133700)) + sin(radians(51.509980)) * sin(radians(lat)))) AS distance
FROM tbl_event
HAVING distance < 5
ORDER BY distance
Здесь -0.133700 создает проблему, другие минус-значения, такие как -122 и т. Д. Работают нормально.Формула Haversine возвращает null в запросе
Пожалуйста, помогите, если кто-то знает об этой проблеме.
в приведенном выше запросе II не показывает какой-либо проблемы с -0.133700 выбора (3959 * ACOS (COS (радиан (51.509980)) * Cos (радиан (0.0)) * Cos (радиан (0.0) - radians (-0.133700)) + sin (радианы (51.509980)) * sin (радиан (0.0)))) AS distance –
простой я заменяю ваш lat long 0.0 и проверяем его работу, возможно, проблема с вашими координатами lat, lng на БД вы можете поделиться этими сведениями –
Спасибо Махеш Мадушанке за ваш комментарий. Я знаю, что в формуле нет никаких проблем. В основном я хочу 0 событий дистанции из моей базы данных, и у меня есть 2 записи с одинаковыми длинными значениями lat, которые равны 51.50998 (lat) и -0.1337 (long). Мое текущее местоположение lat long также одинаково, и оно должно возвращать 0 в качестве значения расстояния, но оно возвращает null. – Bhumika