php mysql 结果为每个 sid 重复第一行

标签 php mysql

我正在尝试在 php 中创建一个 mysql 查询,该查询根据地理坐标生成距离,但我的查询不断复制表中第一个 sid 行的数据。如何让我的查询为具有被调用 sid 的每一行生成结果?

地理表:

fid |席德 |纬度 |经度

887 | 696 | 696 38.62774 | -90.199514

823 | 696 | 696 38.63979 | -90.02946

887 | 693 | 693 38.62774 | -90.199514

823 | 693 | 693 38.59430 | -90.260372

查询结果:

fid |席德 |距离

887 | 696 | 696 0.05

887 | 696 | 696 0.05

887 | 693 | 693 0.05

887 | 693 | 693 0.05

期望的查询结果:

fid |席德 |距离

887 | 696 | 696 0.05

823 | 696 | 696 3.10

887 | 693 | 693 0.05

823 | 693 | 693 12.02

PHP 查询:

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 关键字

关于php mysql 结果为每个 sid 重复第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19945649/

相关文章:

php接口(interface)方法覆盖

PHP 回显 block 行为

PHP MYSQL 简单程序逻辑

MySQL 在 X 个字符后更新部分记录

php - 在 PHP 中构建多通知系统的最佳方式

mysql - 如何使用 hibernate 在多对一关系中映射复合主键

java - Android 应用程序和外部数据库之间通信的最佳方式

php - 使用 swiftmailer 并发送附件

php - PHP 中使用迭代的嵌套注释

mysql - ZF - 使用 CASE WHEN 的 MySQL SUM 查询