如果我的输入$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时仍返回行?
答案 0 :(得分:1)
HAVING
子句正在终止输出。更改查询,使其条件成为WHERE
:
...
WHERE 'cat_id' = '$cat_id' AND distance <= $radius