thinkphp3中SQL语句的转换和count与group的冲突

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36020968/article/details/85092492

原sql语句,

$sql="SELECT
            	count(*),
            	brand.`name` AS '品牌名称',
            	kb_package_goods.`name` '商品名称',
            	kb_package.price,
            	package_goods_id,
            	date_format(
            		from_unixtime(end_time),
                '%Y-%m-%d'
            
            	) AS days
            FROM
            	kb_package
            LEFT JOIN brand ON brand.id = kb_package.brand_id
            LEFT JOIN kb_package_goods ON package_goods_id = kb_package_goods.id
            WHERE
            	kb_package.brand_id IN (
            		SELECT DISTINCT
            			(brand_id)
            		FROM
            			kb_package
            	)
            AND kb_package.state = 0
            GROUP BY
            	kb_package.brand_id,
            	kb_package.package_goods_id"; 

转换后的形式,

$data = $m->limit($Page->firstRow.','.$Page->listRows)->join('LEFT JOIN brand ON brand.id = kb_package.brand_id')
        ->join('LEFT JOIN kb_package_goods ON package_goods_id = kb_package_goods.id')
        ->field('count(1) as mun,brand.name as ppname,kb_package_goods.name as goodname,kb_package.price as jiage, package_goods_id,date_format( from_unixtime(end_time), "%Y-%m-%d" ) as time')
        ->group('kb_package.brand_id, kb_package.package_goods_id')
        ->where($map)->select();

count时的子查询避免与group的冲突

$subQuery = $m->join('LEFT JOIN brand ON brand.id = kb_package.brand_id')
        ->join('LEFT JOIN kb_package_goods ON package_goods_id = kb_package_goods.id')
        ->field('count(1) as mun,brand.name as ppname,kb_package_goods.name as goodname,kb_package.price as jiage, package_goods_id,date_format( from_unixtime(end_time), "%Y-%m-%d" ) as time')
        ->group('kb_package.brand_id, kb_package.package_goods_id')->where($map)->select(false);
        $count = $m->table($subQuery . ' a')->count();

猜你喜欢

转载自blog.csdn.net/qq_36020968/article/details/85092492