Найти пользователей в пределах X метров от другого пользователя.SQL - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь найти пользователей, которые находятся в пределах R метров от другого пользователя (X).Мы используем PostGIS с нашей базой данных SQL.Я могу извлечь Long / Lat из пользователей, используя следующий запрос:

SELECT ST_AsText(location)
FROM api_devicelocation
JOIN api_device a ON api_devicelocation.device_id = a.id
JOIN auth_user au ON a.user_id = au.id
WHERE au.id IN (1323, 1332, 1391, 3887);

Я хочу создать запрос, который позволит нам найти пользователей в R от пользователя (дляэкземпляр 1323).Я обнаружил, что, возможно, использование может работать, но я не могу понять это.

SELECT ST_DWithin(location)

Любая помощь будет принята с благодарностью.Я думаю, что этот тип процесса должен работать, поскольку так работают почти все приложения для знакомств.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

удалось выяснить это

SELECT ST_Distance(gg1, gg2) As spheroid_dist, ST_Distance(gg1, gg2, false) As sphere_dist
FROM (SELECT
    ST_GeogFromText(st_astext(MAX(location))) As gg1,
    ST_GeogFromText(st_astext(MIN(location))) As gg2
  FROM api_devicelocation
  JOIN api_device a ON api_devicelocation.device_id = a.id
  JOIN auth_user au ON a.user_id = au.id
  WHERE au.id = 1323
    ) As foo  ;
0 голосов
/ 26 сентября 2018

Я думаю, вам нужно это условие.Вы можете найти больше примеров, если вы посмотрите ST_DistanceSphere

.... where ROUND(ST_DistanceSphere(geom_R, geom_X ))  >  (limit in metres) ;
...