使用半径变化的位置存储定位器mySQL查询

时间:2019-03-17 13:24:34

标签: mysql

我有一个位置的mySQL表,每个表都有一个id,街道,城市,州,纬度,经度,半径列。每个位置的半径可能会有所不同,即5,10,15,20 ...(英里)。

我要执行的是一个查询,该查询将给我所有半径与给定纬度和经度坐标相关的位置的计数(id)。

我在下面找到了该查询,但是还没有弄清楚如何修改它以满足我的需求。它需要纬度,经度和固定距离。

我的猜测是获取要修改(或删除)Having子句的关键。

我的目标是确定给定半径的任何位置是否碰到中心。

SELECT
    `id`, `street`, `city`, `state`, `radius`, `longitude`, `latitude`,
    (
        6371 *
        acos(
            cos( radians( 41.257160 ) ) *
            cos( radians( `latitude` ) ) *
            cos(
                radians( `longitude` ) - radians( -95.995102 )
            ) +
            sin(radians(41.257160)) *
            sin(radians(`latitude`))
        )
    ) `distance`
FROM
    `shops`
HAVING
    `distance` < 25
ORDER BY
    `distance`
LIMIT
    25

我似乎使用“具有distance <radius来获得结果,但我质疑它们的准确性。我在查询中使用的经度和纬度接近奥马哈东北54 S街1801号。

查看所附的结果屏幕快照,您可以看到该公式返回的距离是950英里远的阿灵顿和2182英里的加利福尼亚尤巴城。实际上,阿灵顿(驾车)约为694英里,加利福尼亚尤巴市则为1565英里。

enter image description here

1 个答案:

答案 0 :(得分:0)

我似乎将查询设置为公里,而不是英里。抱歉