Php 使用两个order by的codeigniter活动记录查询
我是CI新手,我有个问题 我的常规sql是:Php 使用两个order by的codeigniter活动记录查询,php,mysql,codeigniter,Php,Mysql,Codeigniter,我是CI新手,我有个问题 我的常规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"
$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";
我想在CI活动记录中重写它
但我不知道在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)
现在,我的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();
我可以在哪里添加订单((“平均标记”,“描述”)
我试着把它放在极限之后,但我得到了错误的数据
也许还有别的办法
谢谢!- 在查询中进行以下更改,您将获得所需的结果
- 更改包含平均标记的表
->订购人(“$tb1.平均标记”,“描述”)您正在尝试按
avg_mark
升序和降序排列结果?嗯……是的。首先,我按$tb1.avg_mark升序排列结果,然后按$tb1.avg_mark降序排列结果。为什么要这样做?如果您要按相同的东西升序,然后降序,则与或相同通过降序对查询排序(因为这是一个查询)。如果您想得到两组独立的结果,请编写两个查询,否则这没有意义。我解决了这个问题!谢谢大家!哦!对不起,我没有写清楚。avg_标记仅来自$tb1,而不是来自两个表