欢迎使用CSDN-markdown编辑器

    一个企业表,一个发布职位表,每个企业有发布多个职位,group by职位表里的uid,也就是按企业分组,

排序是按最新发布职位的企业排在前边,职位表里有发布时间dateline字段,但是group之后会找不到组里最大时间戳,排序会失败,解决办法是找组里最大的时间戳即可,重点是max()函数

A、使用两表联查,

    $job = M('Job');
    $qy=$job
    ->join('wgb_user_profile on wgb_job.uid=wgb_user_profile.uid')
    ->field('max(wgb_job.dateline) as dt,wgb_user_profile.id,wgb_user_profile.name')
    ->order('dt desc')
    ->group('wgb_job.uid')
    ->limit(12)
    ->select();
    $this->assign('qy',$qy);

B、先从职位表里查询出来排序好的企业ID数组,再找企业表里查询出来这个 主要使用field()和max()函数,

    //实例化表
$job = M('Job');
$qyy = M('user_profile');

$jobs=$job
->field('max(dateline) as dt,uid')
->group('uid')
->order('dt desc')
->limit(12)->select();

//取出来uid字段,即企业uid
    foreach($jobs as $k=>$v){
        $uid[]=$v['uid'];
    }
     $wherearr['uid'] = array('in',$uid);

 $as=implode(',',$uid);
 $order= "field(uid,$as)";
 $qyy = M('user_profile');
 $qy =  $qyy
 ->where($wherearr)
 ->limit(12)
 ->select();
 $this->assign('qy',$qy);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值