我在尝试通过 SQL 语句将最近的位置返回给用户时遇到问题。为了测试我使用完全相同的坐标,这就是我所拥有的:
SQL:
SELECT `companies`.`customerName` ,
(3959 *
ACOS(
COS(
RADIANS(37.367485) * COS(RADIANS(`locations`.`gps_lat`)) *
COS(
RADIANS(`locations`.`gps_lng`) - RADIANS(-77.399994) +
SIN(RADIANS(37.367485)) * SIN(RADIANS(`locations`.`gps_lat`))
)
)
)
)
AS `distance`
FROM `locations`
JOIN `companies` ON `locations`.`co_id`
HAVING `distance` > 25
ORDER BY distance
LIMIT 0 , 10
结果:
| customerName | distance |
| SOME COMPANY | 1914.41747964854 |
locations
表值:
gps_lat | gps_lng
37.367485 | -77.399994
我使用了谷歌的例子,我检查了几次公式,我似乎无法想出哪里出错了。任何帮助表示赞赏。
编辑:
因为我知道自己在做什么似乎有些困惑:
被>
替换以产生结果,1914
显然大于25
。
这个应用程序将用户坐标从 Android 应用程序传递到我们的 Web 服务器。纬度和经度将从我们的网络服务器 MYSQL 数据库中的公司的值中提取$_GET
并交叉引用。
上面的语法只是我在 Mysql Workbench 中检查我的 SQL 语句。显然我正在寻找一个零值的结果。