我有一个应用/网站,需要搜索位于用户指定的邮政编码距离内的所有用户。我有两个表,一个有用户数据,另一个有邮政编码信息。我很难找到查询以查找距离内的用户。我不理解使其运行所需的地理空间查询。
用户表格结构
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
非常感谢任何帮助。