简体   繁体   English

使用两个顺序的codeigniter活动记录查询

[英]codeigniter active record query using two order by

I'm new in CI, and I have a question.. 我是CI的新手,并且有一个问题。

My normal sql is: 我的普通SQL是:

$tb1 = 'se_avg';
$tb2 = 'se_school';

$sql_top = "(SELECT * FROM $tb1 ,$tb2 WHERE $tb1.sid = $tb2.sid AND gid = '$gid' AND avg_mark > $s_mark  AND $tb1.year = '2014' ORDER BY avg_mark ASC LIMIT 0 , 20) ORDER BY vg_mark DESC";

I wanna rewrite it in CI active record. 我想将其重写为CI活动记录。

But I have no idea to put another order by outside this sql: 但是我不知道在此sql之外再下一个命令:

$sql_top = "(SELECT * FROM $tb1 ,$tb2 WHERE $tb1.sid = $tb2.sid AND gid = '$gid' AND avg_mark > $s_mark  AND $tb1.year = '2014' ORDER BY avg_mark ASC LIMIT 0 , 20)

Now, my CI active record is: 现在,我的CI活动记录是:

$tb1 = 'se_avg';
$tb2 = 'se_school';

$sql_top = $this->db
           ->select('*')
           ->from($tb1)
           ->join($tb2, "$tb1.sid = $tb2.sid", 'left')
           ->where('gid', $gid)
           ->where('avg_mark >', $s_mark)
           ->where("$tb1.year", '2014')
           ->order_by("avg_mark", 'asc')
           ->limit(20, 0);

$query = $this->db->get();

Where can I add order_by(("avg_mark", 'desc')? 在哪里可以添加order_by((“ avg_mark”,'desc')?

I've try to put it after limit, but I get wrong data... 我尝试将其放在限制之后,但数据错误...

Maybe there's another way? 也许还有另一种方法?

Thanks! 谢谢!

  • make the following changes in the query and you will get the desired result 在查询中进行以下更改,您将获得所需的结果
  • change which table contains avg_mark 更改哪个表包含avg_mark

->order_by('$tb1.avg_mark', 'DESC') -> order_by('$ tb1.avg_mark','DESC')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM