将一个SQL表中的最高值加入另一个SQL表

时间:2012-06-26 02:45:25

标签: php mysql codeigniter activerecord join

好的家伙我会尽力解释这个。我有一份学校名单和这些学校的成员名单。我正在构建的应用程序让用户获得站点上的操作点。现在我有一个排行榜的页面显示了学校的总分,但是我还希望展示该学校的顶级个人得分...

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果我没有出错你提问,那么你想要的结果会在CI希望中给你这个查询

$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();