При первой публикации я попытаюсь придерживаться передового опыта.
Я пытаюсь создать запрос MySQL, который измеряет местоположение пользователя (представлен в запросе как $Lat
и $Lng
дляширота и долгота соответственно).Запрос должен вернуть 50 станций в непосредственной близости от пользователя.
Проблема в том, что данные в моей таблице содержат местоположение каждой станции вход на станцию, и мне нужна только самая близкаявход на станцию на станцию!
Это мой запрос:
SELECT id, lat, lng, station_name, routes,
( 3959 * acos( cos( radians($Lat) )
* cos( radians( lat ) ) * cos( radians( lng ) -
radians($Lng) ) + sin( radians($Lat) ) * sin( radians( lat ) ) ) ) AS distance
FROM subway_stations ORDER BY distance LIMIT 0 , 50;
Запрос Above MySQL выполняет следующее:
- Выбирает данные из id, lat, lng, имя_поста и маршрутов
- Измеряет широту и lng каждой станции вместе с данными пользователя - сохраняя эти данные как «расстояние»
- Возвращает50 ближайших результатов
Мне нужно сгруппировать эти результаты так, чтобы возвращалась только одна запись для каждой станции, та, которая имеет наименьшее значение в столбце расстояния, который является входом станции, ближайшим к пользователю..
Я пытался использовать GROUP BY
, но мне кажется, что он неправильно реализован, так как возвращаемые результаты не были желаемыми.