php mysql结果将为每个sid复制第一行
我试图在php中创建一个mysql查询,该查询根据地理坐标生成距离,但我的查询不断复制表中第一个sid行的数据。如何让我的查询为每一个具有被调用sid的行生成一个结果 地理表格: fid | sid |纬度|经度 887 | 696 | 38.62774 |-90.199514 823 | 696 | 38.63979 |-90.02946 887 | 693 | 38.62774 |-90.199514 823 | 693 | 38.59430 |-90.260372 查询结果: fid | sid |距离 887 | 696 | 0.05 887 | 696 | 0.05 887 | 693 | 0.05 887 | 693 | 0.05 所需的查询结果: fid | sid |距离 887 | 696 | 0.05 823 | 696 | 3.10 887 | 693 | 0.05 823 | 693 | 12.02 PHP查询:php mysql结果将为每个sid复制第一行,php,mysql,Php,Mysql,我试图在php中创建一个mysql查询,该查询根据地理坐标生成距离,但我的查询不断复制表中第一个sid行的数据。如何让我的查询为每一个具有被调用sid的行生成一个结果 地理表格: fid | sid |纬度|经度 887 | 696 | 38.62774 |-90.199514 823 | 696 | 38.63979 |-90.02946 887 | 693 | 38.62774 |-90.199514 823 | 693 | 38.59430 |-90.260372 查询结果: fid |
public function ListEntry( &$data ){
$task = SPRequest::string('task', null );
if (strtolower($task)!="search.results")
return ;
$session = JFactory::getSession();
$ref_lat = $session->get('mj_rs_ref_lat', null);
$ref_lng = $session->get('mj_rs_ref_lng', null);
$ref_loc = $session->get('mj_rs_center_selector', null);
$ref_dis = $session->get('mj_rs_ref_dist', null);
if (!$ref_lat OR !$ref_lng)
return ;
$km = $this->_getKm() ;
$id = $data['id'] ;
$db =& JFactory::getDBO();
$query = " SELECT GEO.fid, GEO.sid, ";
$query.= " ({$km}*acos(cos(radians({$ref_lat}))*cos(radians(GEO.latitude))*cos(radians(GEO.longitude)-radians({$ref_lng}))+sin(radians({$ref_lat}))*sin(radians(GEO.latitude)))) AS distance ";
$query.= " FROM `#__field_geo` AS GEO ";
$query.= " WHERE GEO.sid = {$id} ";
$query.= " ORDER BY distance ASC ";
$query.= " LIMIT 1 ";
$db->setQuery($query);
$distances = $db->loadAssoc();
$fidgeo = $distances['fid'];
$later = $distances['sid'];
$distance = $distances['distance'];
}
谢谢你的帮助 尝试在SQL查询中使用Distinct关键字尝试使用GROUP BY fid(并改为使用WHERE)
最好使用distinct,因为mysql不会再次读取结果表。@Nadeem停止添加无用的标记!您能给我们提供
{$km}
、{$ref_lat}
和{$ref_lng}
的样本值吗?@Edper{$km}=3959(我选择以英里而不是公里为单位进行搜索),{$ref_lat}=38.6270025和{$ref_lng}=-90.1994042我只有一个结果与您提供的数据一致。您能为DB提供纯sql查询吗?和示例$id号。是的,我添加了Distinct,它不会改变结果。您能给我一个使用having而不是where的示例吗?谢谢您的帮助,我尝试使用您的数据,结果不存在副本。你能再检查一下源数据吗?