场景:会员(user)对应【vip购买记录(vip_card_buy_log)关联会员卡表,同时存在多条购买记录,可能有不同的会员等级,查目前最高级】,想筛选不同会员等级的
先用子查询查出最高等级的会员等级
$activitySign = Db::name('vip_card_buy_log')->alias('l')
->field('l.uid,max(c.level) as clv')
->join('vip_card c','c.id=l.card_id')
->where('l.start_time', '<=', time())
->where('l.end_time', '>=', time())
->group('l.uid')
->buildSql();
再关联查询,关联子查询(as.clv = '.$where['vip_level'])where条件直接用最大值做条件
$list = User::alias('u')
->join([$activitySign=> 'as'], 'u.uid = as.uid AND as.clv = '.$where['vip_level'])
->select();