【问题标题】:Join top value from one SQL table to another SQL table将一个 SQL 表的最高值连接到另一个 SQL 表
【发布时间】:2012-06-26 02:45:24
【问题描述】:

好的,伙计们,我会尽力解释这一点。我有一份学校名单和这些学校的成员名单。我正在构建的应用程序让用户在网站上的操作获得积分。现在我有一个排行榜页面,显示曾经的学校,按总分的顺序排列,但我还想显示该学校的最佳个人得分手......

所以现在,我正在使用 CodeIgniter ActiveRecord 执行此操作...

$this->load->database();
$this->db->select('school_name, points')->order_by('points', 'desc');
$query = $this->db->get( 'schools_final' );
return $query;

但如果可能的话,我还希望在此查询中显示来自该特定学校的用户表中的最高得分者。我很想避免在 foreach 语句中进行子查询。

我的桌子是这样的......

学校...

id | school_name | points

用户...

id | first_name | last_name | school_id | points

【问题讨论】:

    标签: php mysql codeigniter activerecord join


    【解决方案1】:

    我不知道如何在 CI 中编写,但您必须使用子查询。在 mysql 中用于此目的的简单查询是 { select * from user,school where user.school_id = school.id and user.points = (select max(user.points) from user where user.school_id = school.id) group by school_id } 我相信你会在 CI 中找到一些方法。

    【讨论】:

      【解决方案2】:

      如果我没有弄错你的问题,那么你想要的结果会在 CI Hope 中给你这个查询

      $query=$this->db->query("SELECT
        school_name.school_name AS School_Name,
        school_name.points      AS Total_point,
        users.first_name        AS Top_Scorer,
        users.points            AS Total_Point
      FROM school_name
        LEFT JOIN users
          ON users.school_id = school_name.id
      GROUP BY (users.school_id)
      ORDER BY school_name.points,users.points DESC");
                      return $query->result();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        • 2018-02-12
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        相关资源
        最近更新 更多