SQL - Lat / Lng距离查询 - 如果距离= 0,则不返回任何内容

时间:2010-12-09 22:47:08

标签: sql mysql database geocoding

如果我的输入$latitude $longitude值恰好与DB中存储的值完全匹配,则不会返回任何内容(例如,搜索自己)...我假设因为距离将为0。

我正在使用此查询:

SELECT *,
(((acos(sin((".$latitude."*pi()/180)) * sin((`lat`*pi()/180))
+cos((".$latitude."*pi()/180)) * cos((`lat`*pi()/180))
* cos(((".$longitude."- `lng`)*pi()/180))))*180/pi())*60*1.1515)
AS distance
FROM ...

LEFT JOIN ...
ON ...

WHERE 'cat_id' = '$cat_id'

HAVING distance <= $radius
ORDER BY distance ASC

我发现的一个解决方案是通过减少lat lng值的小数来减少输入的准确性 - 但这并不是真正的解决方案。

如何更改查询,以便在距离为0时仍返回行?

1 个答案:

答案 0 :(得分:1)

HAVING子句正在终止输出。更改查询,使其条件成为WHERE

的一部分
...
WHERE 'cat_id' = '$cat_id' AND distance <= $radius