2016-12-24 187 views
1

我的mySQL查询如下,看起来像我期望的那样工作,从地理坐标输入(由$lat1$lat2表示)返回50英里范围内的single人的计数。值lattitudelongitude来自已经在我的数据库中的值。返回空而不是0

我现在唯一的问题是,假设没有人符合给定的标准,我希望计数返回0.相反,我得到一个空的答复。

SELECT 
COUNT(*) as cnt, 
(3959 * 
    acos(
     cos(radians({$lat1})) 
     * cos(radians(lattitude)) 
     * cos(radians(longitude) - radians({$lon1})) 
     + sin(radians({$lat1})) 
     * sin(radians(lattitude)) 
    ) 
) AS distance 
    FROM members WHERE status = 'single' HAVING distance < 50 

如果它是重要的,我已经通过$row = mysqli_fetch_assoc($query);获取我的数据,其中$query是你在上面看到的代码。

回答

1

你应该使用IFNULL

SELECT ifnull(COUNT(*), 0) as cnt, 
+0

这很奇怪。我仍然返回空白结果。 – abrahamlinkedin

+0

是的,事实证明,我的API有些奇怪。代码有效。谢谢! – abrahamlinkedin

1

也许有在查询一个错误,如果你正在使用count(*)另一个你应该给一个group by这是不缺少集合列。

+0

是的。肯定有一个错误。我如何重写我的查询以确保“0”值显示? – abrahamlinkedin