1

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

所以现在,使用 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
4

2 回答 2

0

我不知道如何用 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 中找到一些方法。

于 2012-06-26T04:56:05.080 回答
0

如果我没有弄错你的问题,那么你想要的结果会在 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();
于 2012-06-26T09:38:53.493 回答