Получите результаты mysql на основе долготы широты

У меня есть база данных mysql и 2 таблицы, скажем, клиенты и школы. Теперь каждая таблица имеет столбцы широты и долготы. И мне нужно сделать SELECT, например, из второй таблицы, где школы находятся в заданном радиусе одной записи из первой таблицы. Расчеты должны производиться на основе широты и долготы. PS: Я использую PHP.

Solutions Collecting From Web of "Получите результаты mysql на основе долготы широты"

Вы можете рассчитать расстояние, используя сферический закон косинусов :

SELECT DEGREES(ACOS(SIN(RADIANS(clients.latitude)) * SIN(RADIANS(schools.latitude)) + COS(RADIANS(clients.latitude)) * COS(RADIANS(schools.latitude)) * COS(RADIANS(clients.longitude – schools.longitude)))) * 60 * 1.1515 * 1.609344 AS distance FROM clients, schools HAVING distance < $radius 

РАДИАНСЫ (X) – градусы к радианам
ACOS (X) – дуговой косинус X, т. Е. Значение, косинус которого равен X
СТЕПЕНИ (X) – радиан до градусов

60 – минут в градусах
1.1515 миль в морской миле
1,609344 – километров в миле