我在我的模型中使用这个代码点火器活动记录查询来获得我的用户表中得分最高的10个用户。
$this->db->order_by('points', 'desc');
$q=$this->db->get('user', 10);
$data = $q->result_array();
return $data;这是很好的工作,并返回信息的前10名的用户最多的分数。points是我user表中的一列。
然而,我一直在试图获得另外一个表entries中也存在的前10名用户。
在条目表中,当用户输入条目时,存储当前用户的user_id og。
我想要得到的顶部谁已经吃了。因此,我想修改上面的查询,以返回在entries表中拥有最多点数的10个用户。
User Table:
id, name, points
Entries Table:
id, time_entered, image, user_id我该怎么做?
我尝试了一个join,它只返回了一个得分最多的用户。
发布于 2014-01-29 17:15:24
希望您的条目表中有user_id作为外键。
所以你的代码应该是:
$this->db->select("user.*,entries.*");
$this->db->from("user");
$this->db->join("entries","user.id = entries.user_id");
$this->db->order_by('user.points', 'desc');
$this->db->limit(10);
$q = $this->db->get();
$data = $q->result_array();
return $data;发布于 2014-01-29 17:20:57
我不熟悉CI,但我会尝试提供一个MySQL查询,
SELECT * from user AS u
WHERE u.id IN (
SELECT e.user_id from entries AS e
)
ORDER BY points DESC LIMIT 10只需将其转换为CI AR查询即可。我认为CI有一些方法来设置AR查询的condition。如果存在该选项,则只需将条件设置为IN,以确定条目表中是否存在u.id。
https://stackoverflow.com/questions/21437276
复制相似问题