有这样一个SQL语句。是用来查询附近的人的。要知道有多少人使用。使用model的count方法。
下面是这个SQL语句:
SELECT userid ,username,homeland,headImage,(ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.' * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6378.137) as distance from user,refresh order by distance where geohash=:geohash1 or geohash=:geohash2 or geohash=:geohash3 or geohash=:geohash4 or geohash=:geohash5 or geohash=:geohash6 or geohash=:geohash7 or geohash=:geohash8 or geohash=:geohash9" limit 0,10;
其中user表是记录了user的信息。refresh表记录了的是用户随时经度和维度的变化。
本文档主要讲述的是Python开发网站指南;HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器 Python和其他程序语言一样,有自身的一套流程控制语句,而且这些语句的语法和其它程序语言类似,都有for, if ,while 类的关键字来表达程序流程。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
$criteria = new CDbCriteria;
$criteria->addCondition('where geohash=:geohash1 or geohash=:geohash2 or geohash=:geohash3 or geohash=:geohash4 or geohash=:geohash5 or geohash=:geohash6 or geohash=:geohash7 or geohash=:geohash8 or geohash=:geohash9');
$criteria->params=array(':current'=>$current);
$criteria->order='distance DESC';
$refreshModel=Refresh::model();
$total=$planModel->count($criteria);
$pager=new CPagination($total);
$pager->pageSize=10;
$pager->applyLimit($criteria);
$planList= $planModel->findAll($criteria);
然后使用relation规则来得到User表的信息。
请问这样做能不能达到预期的效果?
最后好像生成的数组还要变一下,然后才能返回有效的信息(JSON)给客户端、但是这个where条件太坑爹了。能不能稍稍优化一下。
最关键的是:
(ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.' * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6378.137) as distance
这句话我该放在哪里?是放在select属性里面吗?
回复内容:
有这样一个SQL语句。是用来查询附近的人的。要知道有多少人使用。使用model的count方法。
下面是这个SQL语句:
SELECT userid ,username,homeland,headImage,(ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.' * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6378.137) as distance from user,refresh order by distance where geohash=:geohash1 or geohash=:geohash2 or geohash=:geohash3 or geohash=:geohash4 or geohash=:geohash5 or geohash=:geohash6 or geohash=:geohash7 or geohash=:geohash8 or geohash=:geohash9" limit 0,10;
其中user表是记录了user的信息。refresh表记录了的是用户随时经度和维度的变化。
$criteria = new CDbCriteria;
$criteria->addCondition('where geohash=:geohash1 or geohash=:geohash2 or geohash=:geohash3 or geohash=:geohash4 or geohash=:geohash5 or geohash=:geohash6 or geohash=:geohash7 or geohash=:geohash8 or geohash=:geohash9');
$criteria->params=array(':current'=>$current);
$criteria->order='distance DESC';
$refreshModel=Refresh::model();
$total=$planModel->count($criteria);
$pager=new CPagination($total);
$pager->pageSize=10;
$pager->applyLimit($criteria);
$planList= $planModel->findAll($criteria);
然后使用relation规则来得到User表的信息。
请问这样做能不能达到预期的效果?
最后好像生成的数组还要变一下,然后才能返回有效的信息(JSON)给客户端、但是这个where条件太坑爹了。能不能稍稍优化一下。
最关键的是:
(ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.' * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6378.137) as distance
这句话我该放在哪里?是放在select属性里面吗?









