版权声明:本文为博主原创文章,未经博主允许不得转载。 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();