Выбор данных из базы данных на основе чисел - PullRequest
1 голос
/ 02 сентября 2010

Я пытаюсь выяснить, как выбирать данные из таблицы MySQL на основе близости к числу.Вот что я имею в виду.

Я пишу приложение, в котором хранятся координаты мест (долгота и широта), и я хотел бы иметь возможность выбирать данные из базы данных на основе местоположения, гдепользователь есть.Например, у меня есть три местоположения в базе данных: [(-70.425, 45.836), (-74.234, 41.639), (-75.747, 41.836)], а местоположение пользователя равно (-74.345, 41.625).).Я хотел бы иметь возможность выбирать записи так, чтобы они расширялись в соответствии с расстоянием от пользователя, получая три записи в следующем порядке: [(-74.234, 41.639), (-75.747, 41.836), (-70.425,45.836)].

Возможно ли это даже в MySQL или мне придется выбрать несколько записей из базы данных и выполнить вычисления на моем языке программирования?

1 Ответ

2 голосов
/ 02 сентября 2010

Взгляните на эту статью

http://zcentric.com/2010/03/11/calculate-distance-in-mysql-with-latitude-and-longitude/

Цитировать

"Итак, у вас есть целая таблица, заполненная членами или местами, с которыми связаны широта и долгота. Просто замените $ lat и $ lon центральной точкой, от которой вы хотите найти расстояния. Вы также можете изменить расстояние <= 10 на число, по которому вы хотите выполнить поиск. Это ограничит ваши результаты всеми результатами, которые находятся на расстоянии менее 10 миль от начальной точки </p>

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon – lon) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS Расстояние FROM Участники HAVING Расстояние <=’10′ ORDER BY Расстояние ASC

"

Обратите внимание, что $ lon и $ lat будут вашими php-переменными. lat и lon (sans $) - это имена столбцов в этом примере, т.е.

Таблица будет состоять из членов с столбцами lat и lon

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...