Я хочу получить строки из базы данных MySql с фильтром по близости и пределом расстояния. Я создал запрос, который отлично работает для получения данных поблизости, но я хочу добавить условие для ограничения расстояния, это означает, что мне нужны строки, которые находятся на расстоянии 20 км.
Это запрос, который работает поблизости.
$lat = "";
$lon = "";
$sql = "SELECT *,
111.111 *
DEGREES(ACOS(COS(RADIANS(".$lat."))
* COS(RADIANS(Lat))
* COS(RADIANS(".$lon." - Lon))
+ SIN(RADIANS(".$lat."))
* SIN(RADIANS(Lat)))) AS d
FROM Table
ORDER BY d"






Вы можете использовать предложение HAVING для достижения этой цели.
$sql = "SELECT *,
111.111 *
DEGREES(ACOS(COS(RADIANS(".$lat."))
* COS(RADIANS(Lat))
* COS(RADIANS(".$lon." - Lon))
+ SIN(RADIANS(".$lat."))
* SIN(RADIANS(Lat)))) AS d
FROM Table HAVING d <= 20
ORDER BY d"
(или
WHERE 111.111 * ... <=20)