根据邮政编码查找位置半径范围内的用户

时间:2017-09-03 23:14:07

标签: sql database geolocation gis zipcode

我有一个应用/网站,需要搜索位于用户指定的邮政编码距离内的所有用户。我有两个表,一个有用户数据,另一个有邮政编码信息。我很难找到查询以查找距离内的用户。我不理解使其运行所需的地理空间查询。

用户表格结构

username        zip 
=====================   
tester55        60608   
Tester1         00544   
iosuser1        73120   
Tester3         01002

Zipcodes表格结构

zip     latitude     longitude
------------------------------
00501   40.8154      -73.0451
00544   40.8154      -73.0451
01001   42.0702      -72.6227
01002   42.3671      -72.4646

我想使用用户的邮政编码查找特定半径范围内的其他用户。以下是我到目前为止的查询,我正在试图弄清楚如何进行一次查询。

第一次查询

    Select users.zip, users.username, zipcodes.zip as user zip, 
zipcodes.longitude as userlong, zipcodes.latitude as userlat
from users, zipcodes where users.zip = zipcodes.zip AND username = 'tester55

第二次查询

SELECT zipcodes.zip, zipcodes.city, zipcodes.state, zipcodes.longitude, zipcodes.latitude, ( 3959 * acos( cos( radians(userlat) ) * cos( radians( zipcodes.latitude ) ) 
    * cos( radians( zipcodes.longitude ) - radians(userlong) ) + sin( radians(userlat) ) * sin(radians(zipcodes.latitude)) ) ) AS distance 
FROM zipcodes
HAVING distance < 50
ORDER BY distance

非常感谢任何帮助。

0 个答案:

没有答案