我有两个表格如下所示:
它应列出所选邮政编码周围5公里内的特征。
我正在尝试使用以下查询获得结果,但未获得正确的结果。
SELECT* FROM (
SELECT p。*,
回合(
60 * 1.1515 * 1.609344 * DEGREES(
ACOS(
COS(RADIANS(pc。latitude
))* COS(RADIANS(p。lat
))* COS(RADIANS(pc。longitude
- p。lng
))+ SIN(RADIANS(pc。latitude
))* SIN(RADIANS(p。lng
))
)
)
2
)AS距离
FROM properties
AS p JOIN postcodes_geo AS pc ON(p。postcode_id
= pc。id
)
在哪里p.postcode_id IN(792,790,786,12613) )AS ftbl WHERE距离< = 5
答案 0 :(得分:0)
以下是提供基于邮政编码搜索所需的相同功能的网络服务。
http://www.geonames.org/export/web-services.html
在这里你可以传递postcode和radius作为参数,它将返回与XML和JSON格式相关的zipcodes列表。
例如:http://api.geonames.org/findNearbyPostalCodesJSON?postalcode=2032&country=AU&radius=10&username=demo
答案 1 :(得分:-1)
@krishna如何查询
SELECT *
FROM (
SELECT properties.*
,(111.045000 * DEGREES(ACOS(COS(RADIANS(- 33.867487)) * COS(RADIANS(lat)) * COS(RADIANS(151.206990 - lng)) + SIN(RADIANS(- 33.867487)) * SIN(RADIANS(lat))))) AS distance
FROM `properties`
WHERE `properties`.`deleted_at` IS NULL
AND lat BETWEEN - 33.912514
AND - 33.822460
AND lng BETWEEN 151.152763
AND 151.261218
) AS properties
WHERE `properties`.`deleted_at` IS NULL
UNION
SELECT *
FROM (
SELECT properties.*
,(111.045000 * DEGREES(ACOS(COS(RADIANS(- 33.914437)) * COS(RADIANS(lat)) * COS(RADIANS(151.241642 - lng)) + SIN(RADIANS(- 33.914437)) * SIN(RADIANS(lat))))) AS distance
FROM `properties`
WHERE `properties`.`deleted_at` IS NULL
AND lat BETWEEN - 33.959464
AND - 33.869411
AND lng BETWEEN 151.187384
AND 151.295899
) AS properties
WHERE `properties`.`deleted_at` IS NULL
UNION
SELECT *
FROM (
SELECT properties.*
,(111.045000 * DEGREES(ACOS(COS(RADIANS(- 33.914437)) * COS(RADIANS(lat)) * COS(RADIANS(151.241642 - lng)) + SIN(RADIANS(- 33.914437)) * SIN(RADIANS(lat))))) AS distance
FROM `properties`
WHERE `properties`.`deleted_at` IS NULL
AND lat BETWEEN - 33.959464
AND - 33.869411
AND lng BETWEEN 151.187384
AND 151.295899
) AS properties
WHERE `properties`.`deleted_at` IS NULL Limit 10
,10
这可能会根据您的需要为您提供帮助,但您需要花点时间来准备查询