我正在从表单中获取邮政编码。然后,我可以将此邮政编码转换为 lng、lat 坐标,因为我已将它们存储在表格中。
SELECT lng, lat from postcodeLngLat WHERE postcode = 'CV1'
我有另一张桌子,它存储了一系列场地的 lng、lat。
SELECT v.lat, v.lng, v.name, p.lat, p.lng, p.postcode, 'HAVERSINE' AS distance FROM venuepostcodes v, postcodeLngLat p WHERE p.outcode = 'CB6' ORDER BY distance
我要做的是创建一个数据网格,显示每个场地与邮政编码的距离(在本例中为 CV1)。我知道 Haversine 公式应该做我想要实现的目标,但我不知道应该从哪里开始将它合并到我的查询中。我认为公式需要放在我'HAVERSINE'
在上面的查询中输入的位置。
有任何想法吗?
编辑
SELECT o.outcode AS lead_postcode, v.venue_name, 6371.0E * ( 2.0E *asin(case when 1.0E < (sqrt(square(sin(((RADIANS(CAST(o.lat AS FLOAT)))-(RADIANS(CAST(v.lat AS FLOAT))))/2.0E)) + (cos(RADIANS(CAST(v.lat AS FLOAT))) * cos(RADIANS(CAST(o.lat AS FLOAT))) * square(sin(((RADIANS(CAST(o.lng AS FLOAT)))-(RADIANS(CAST(v.lng AS FLOAT))))/2.0E))))) then 1.0E else (sqrt(square(sin(((RADIANS(CAST(o.lat AS FLOAT)))-(RADIANS(CAST(v.lat AS FLOAT))))/2.0E)) + (cos(RADIANS(CAST(v.lat AS FLOAT))) * cos(RADIANS(CAST(o.lat AS FLOAT))) * square(sin(((RADIANS(CAST(o.lng AS FLOAT)))-(RADIANS(CAST(v.lng AS FLOAT))))/2.0E))))) end )) AS distance FROM venuepostcodes v, outcodepostcodes o WHERE o.outcode = 'CB6' ORDER BY distance