【发布时间】:2021-04-15 14:04:07
【问题描述】:
这是一个很难解释的问题。我能够找到 x 英里半径内的所有邮政编码。但是我想做的是从 tblUsers 中找到 MaxDistance 为
所以用简单的英语,我想根据他们的MaxDistance了解邮政编码半径内的所有人
例如我有一张桌子:
tblUsers(ID int, Maxdistance int,Zipcode varchar(5)) 1|50|94129 2|25|94111 3|100|19019在我的第二张桌子上:
tblTmpPlaces(ID int,Zipcode varchar(5)) 1|94129我想要做的是使用 tblTmpPlaces 邮政编码,我希望能够说嘿用户 1 和 2 在他们的最大距离内并选择这些。但是,用户 3 的最大距离为 100,并且与 tblTmpPlaces 邮政编码 94129 的距离不够近。94129 是旧金山,19019 是费城。用户距离旧金山 100 多英里。
这是我一直用来获取距离的方法,但它使用中心位置来查找区域内的所有内容,但它没有考虑 MaxDistance。任何帮助表示赞赏。
所以基本上select ID from tblUsers where 这是我遇到的部分
SELECT Zipcode
FROM tblZipcodes
WHERE ( 3959
* acos(
cos(
radians(
@XLocationParam))
* cos(
radians(
x(location)))
* cos(
radians(
y(location))
- radians(
@YLocationParam))
+ sin(
radians(
@XLocationParam))
* sin(
radians(
x(location)))) <= 30))
【问题讨论】:
-
迈克,你能根据你上面的数据告诉我们预期的输出吗? :)
-
只有 MySQL 还是可以在后台使用 PHP?我更喜欢 PHP,否则需要子查询。
-
@JamesCameron 仅限 MySQL
-
@bonCodigo ~我想说嘿用户 1 和 2 在他们的最大距离内,然后选择这些你会在选择中获得用户 1/2
标签: mysql geospatial spatial