mysql 使用group by之后返回的总条数问题
标签一共有三级。
原本产品只与三级标签关联。
这样的话根据一级标签就搜索不到产品。
因为客户要求点击一级标签或二级标签要能搜出三级标签的产品,所以后台做了处理,把产品与一级二级标签都进行了关联,所以导致产品与标签不是一对一的关系,变成一对多的关系,所以用左连接查询会有产品重复的情况。
所以在查询的时候用了mysql的group by,查询的时候根据产品id来分组。
用了group by之后解决了重复的问题,但是新的问题又出现了,查询出来的总条数有问题。
解决方法是拿出分组之后的所有数据,用php的count() 函数算出总条数。但是这样的方法性能比较差。因为每次都会拿出数据库一张表所有的数据。
下面是接口代码
public function listProducts(Request $request) {$result = DB::table('product_labels')->select(['product_labels.id as id','products_product_id.id as product_id','products_product_id.name as name','products_product_id.image as image','products_product_id.price as price','products_product_id.cer_year as cer_year','product_labels.label_id as label_id',]);$result = $result->leftJoin('products as products_product_id', 'products_product_id.id', '=', 'product_labels.product_id');$result = $result->groupBy('product_id'); //取出所有分组之后的数据$count = count($result->get()); $result = $result->offset($request->input('offset'))->limit($request->input('length'))->get();$result = ['data' => $result,'total' => $count];retu $this->success($result);}
作者:caiJava
来源链接:https://www.cnblogs.com/lastingjava/p/11093399.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。