我有以下 SQL 语句,它从数据库中选择公司(带有存储的纬度/经度)并显示距客户位置最近的 5 个位置。这工作完美:
$query = sprintf("SELECT company_name, address, telephone, fax, contact_email, website, url, latitude, longitude, (1.609344 * 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('".$center_lng."') ) + sin( radians('".$center_lat."') ) * sin( radians( latitude ) ) ) ) AS distance FROM cmsms_module_compdir_companies WHERE status='published' AND latitude!='' AND longitude!='' ORDER BY distance limit 5 ",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat));
但是,我想将结果限制为仅距客户位置 X 距离(例如 50 公里)内的商店。我想我可以在下面添加粗体部分:
$query = sprintf("SELECT company_name, address, telephone, fax, contact_email, website, url, latitude, longitude, (1.609344 * 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('".$center_lng."') ) + sin( radians('".$center_lat."') ) * sin( radians( latitude ) ) ) ) AS distance FROM cmsms_module_compdir_companies WHERE status='published' AND latitude!='' AND longitude!='' AND distance<'50' ORDER BY distance limit 5 ", mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat));
...但这根本不返回任何结果。
有什么想法吗?
最佳答案
您不能在 where
条件中使用计算值distance
。
请使用拥有
where ....
having distance < 50
顺便说一句:距离单位是公里?
关于PHP MySQL 语句 - "select as"和 "where",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13670911/