网站首页PHP学习

thinkphp group by先order by的方法

发布时间:2017-01-11编辑:admin阅读(404)

    $list = $this->table(array(C('DB_PREFIX').'follow'=>'f',C('DB_PREFIX').'goods'=>'g',C('DB_PREFIX').'goods_log'=>'gl'))->field('gl.price as price,gl.sales as sales,gl.log_time as time,g.good_id as id,g.pt,g.id as gid')->where('g.id=f.gid and f.uid = "'.session('userid').'" and g.id = gl.gid '.$where)->order('gl.log_time desc')->group('gl.id')->select();

    之前的写法是这样,可是执行并不能获取到最新的id

    查看tp手册上面的子查询

    发现http://document.thinkphp.cn/manual_3_2.html#sub_query这里面的代码刚好能解决我的问题


    于是修改代码:

    $subQuery = $this->table(array(C('DB_PREFIX').'follow'=>'f',C('DB_PREFIX').'goods'=>'g',C('DB_PREFIX').'goods_log'=>'gl'))->field('gl.price as price,gl.sales as sales,gl.log_time as time,g.good_id as id,g.pt,g.id as gid')->where('g.id=f.gid and f.uid = "'.session('userid').'" and g.id = gl.gid '.$where)->order('gl.log_time desc')->buildSql(); 
    
    $list = $this->table($subQuery.' a')->group('gid')->select() ;
    return $list;

    执行的sql代码是

    SELECT * FROM ( SELECT gl.price as price,gl.sales as sales,gl.log_time as time,g.good_id as id,g.pt,g.id as gid FROM `hbj_follow` `f`,`hbj_goods` `g`,`hbj_goods_log` `gl` WHERE ( g.id=f.gid and f.uid = "14" and g.id = gl.gid  ) ORDER BY gl.log_time desc  ) a GROUP BY gid



    收录情况:百度未收录
    本文地址:http://luvial.cn/content/10065.html
    转载请保留原文地址!

    如果您觉得本文对您有帮助,且您有经济能力,欢迎捐助本站
标签: thinkphp groupby orderby
上一篇:office2013破解教程+工具
下一篇:aws创建实例并在putty上登录