У меня есть таблица, в которой хранятся города с их координатами (широта, долгота) и информацией о погоде. Существует вероятность, что пользователь ищет города, в которых нет информации о погоде, но в городе поблизости есть.
Также я не хочу искать город по названию, потому что название города может измениться, если набрано на другом языке, (например, Киев - Киев, Женева, Женева, Генф и т. Д.), Координаты не меняются много.
Итак, я использую Google API, чтобы получить лат, длинный от названия города, который возвращает что-то вроде этого:
Для города Киева: (Google)
Latitude : 50.4501 , Longitude= 30.5234
(округлено до: 50,45 - 30,52)
Однако, в моей таблице погоды, город записан как Киев и имеет следующие координаты:
Latitude : 50.4333 , Longitude= 30.5167
Итак, как мне теперь перейти к поиску в моей таблице погоды, чтобы найти округленные значения координат (хранящиеся в виде чисел с плавающей запятой)
SELECT * FROM weather_cities WHERE Latitude='50.45' AND Longitude='30.52'
Приведенный выше запрос не будет работать, потому что широта в mysql (50.4333) будет округлена до 50.44, а не 50.45. Если бы я снизил точность только до одного десятичного знака, это было бы, но в других случаях я получал бы слишком много соответствующих городов.
Я хотел бы искать в числах с плавающей точкой самые близкие / ближайшие значения в mysql, не выводя слишком много результатов. Что вы посоветуете мне для достижения ожидаемого результата? Я использовал mysql и php.
Я посмотрел на это решение: https://leehblue.com/match-a-float-in-mysql/, а также на это: PHP Как округлить до двух десятичных знаков?
но я застрял.