自己做的一个子查询

浏览:722 发布日期:2014/11/09 分类:技术分享 关键字: 子查询
//将这个查询条件转到换成TP的查询方式
//select * from (select ad.id, ad.did, ad.start, ad.end, ad.src, ad.url, af.position, af.alias as 'cn_position', af.price from ls_ad_list ad left join ls_ad_definition af on ad.did = af.id where af.genre in (select genre from ls_ad_order ao where ao.status = 0 group by ao.genre)) as t where t.url <> '';

$sub1 = M('AdOrder')->field('genre')->group('genre')->where(array('status'=>0))->select(false);

$condition['genre'] = array('exp', ' IN ' . $sub1);
$sub2 = M('AdList')->alias('ad')->field("ad.id, ad.did, ad.start, ad.end, ad.src, ad.url, af.position, af.alias as 'cn_position', af.price")->join('LEFT JOIN __AD_DEFINITION__ af ON af.id = ad.did')->where($condition)->select(false);

$cd['url'] = array('neq', '');
$d = M()->table($sub2 . ' a')->where($cd)->select(false);
echo $d;

//输出:
/* SELECT * FROM ( SELECT ad.id,ad.did,ad.start,ad.end,ad.src,ad.url,af.position,af.alias as 'cn_position',af.price FROM ls_ad_list ad LEFT JOIN ls_ad_definition af ON af.id = ad.did WHERE `genre` IN ( SELECT `genre` FROM `ls_ad_order` WHERE `status` = 0 GROUP BY genre ) ) a WHERE `url` <> '' */
最佳答案
评论( 相关
后面还有条评论,点击查看>>