【发布时间】:2017-04-29 08:06:58
【问题描述】:
我在 MYSQL 中有表以及 lat & lon 值。
我想在当前纬度和经度的上下文中获取半径 10 公里内的用户。
我正在尝试以下查询,但它给了我空的输出。
SELECT
`id`,
`name`,
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 AS `distance`
FROM `users`
WHERE
ACOS( SIN( RADIANS( `latitude` ) ) * SIN( RADIANS( $fLat ) ) + COS( RADIANS( `latitude` ) )
* COS( RADIANS( $fLat )) * COS( RADIANS( `longitude` ) - RADIANS( $fLon )) ) * 6380 < 10
ORDER BY `distance`
其中纬度和经度是列名,$fLat 和 $fLon 是当前的纬度和经度值。
【问题讨论】:
-
你可以尝试在php中进行计算
-
对一个距离 >= 10 和几个小于 10 的测试数据库进行一些测试。使用网络上的距离计算器来获得正确的距离。与没有 where 子句的 SQL 进行比较。找出问题所在。
-
我很确定 6380 是错误的因素。关注 [latitude-longitude] 标签,了解有关该主题的许多讨论,以及许多公式(其中大部分是正确的)。