【发布时间】:2014-08-13 18:59:40
【问题描述】:
您好,我有下表
--------------------------------------------
| id | city | Latitude | Longitude |
--------------------------------------------
| 1 | 3 | 34.44444 | 84.3434 |
--------------------------------------------
| 2 | 4 | 42.4666667 | 1.4666667 |
--------------------------------------------
| 3 | 5 | 32.534167 | 66.078056 |
--------------------------------------------
| 4 | 6 | 36.948889 | 66.328611 |
--------------------------------------------
| 5 | 7 | 35.088056 | 69.046389 |
--------------------------------------------
| 6 | 8 | 36.083056 | 69.0525 |
--------------------------------------------
| 7 | 9 | 31.015833 | 61.860278 |
--------------------------------------------
现在我想得到两点之间的距离。假设一个用户拥有一个城市 3,一个用户拥有一个城市 7。我的场景是一个用户拥有一个城市和纬度和经度,正在搜索其他用户与他的城市的距离。例如,拥有城市 3 的用户正在搜索。他想得到任何其他城市的用户的距离说它是 7。我已经搜索并找到了以下查询
SELECT `locations`.`city`, ( 3959 * acos ( cos ( radians(31.589167) ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians(64.363333) ) + sin ( radians(31.589167) ) * sin( radians( Latitude ) ) ) ) AS `distance` FROM `locations` HAVING (distance < 50)
据我所知,此查询查找从一个点到所有其他点的距离。现在我想获得从一点到另一点的距离。
任何指南都将不胜感激。
【问题讨论】:
-
所以对表格进行自连接以获得两组坐标,然后您只需对这两点进行计算。
-
您是否考虑过将其从 SQL 查询中取出,并为此使用 Google Maps API?我知道它没有回答你的问题。但是您可能会发现这项工作已经为您完成了。
-
@MarcB 没明白你的意思,亲爱的
-
@durbnpoisn 不,我不想要那个解决方案。这是我的要求。
-
@MarcB 此查询将循环运行,因此我将获得两个点的值。但是如何输入此查询并不容易理解。