Динамический охват связанной модели с последующей сортировкой по расстоянию

У меня есть таблица, в которой я храню журналы местоположений всех пользователей, откуда мне нужно получить последнее местоположение всех пользователей и отсортировать его по расстоянию от указанной геометрической точки.

Таблица местоположений

идентификатор ID пользователя расположение время 1 1 ТОЧКА отметка времени 2 1 ТОЧКА отметка времени 3 2 ТОЧКА отметка времени 4 2 ТОЧКА отметка времени

Результат должен быть

идентификатор ID пользователя расположение время 2 1 ТОЧКА отметка времени 4 2 ТОЧКА отметка времени

Затем мне нужно отсортировать пользователей, которые находятся ближе всего к указанной точке. Я понял, как использовать функцию MySQL Spatial, чтобы получить расстояние, но не могу отсортировать результат выше. Я сослался на это для получения последнего местоположения и это из другого ответа на переполнение стека, но мне было трудно использовать оба вместе.

Я ценю любую помощь и спасибо заранее

Так покажи нам, что у тебя есть

Strawberry 12.12.2020 08:31

Извините, у меня в принципе ничего нет. Я сделал прицел, но не мог понять, как с ним работать pastebin.com/DmQU76ps. Спасибо!

Suraj Jadhav 12.12.2020 08:37
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
WITH cte AS ( SELECT source_table.*, 
                     ROW_NUMBER() OVER (PARTITION BY source_table.user_id 
                                        ORDER BY source_table.time DESC) rn
              FROM source_table )
SELECT cte.*
FROM cte
WHERE cte.rn = 1 
ORDER BY ST_Distance(cte.location, @specified_point)

Спасибо, сэр, за ответ. Мне нужно время, чтобы обработать это самостоятельно.

Suraj Jadhav 12.12.2020 08:52

Другие вопросы по теме