亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用最粗糙的方法,寫出了查詢簡單的商品篩選的 SQL 語句,請問我該如何簡化??

用最粗糙的方法,寫出了查詢簡單的商品篩選的 SQL 語句,請問我該如何簡化??

慕慕森 2019-05-15 10:42:02
下面是我寫的查詢語句,可愁死我了,功能實現倒是實現了,寫的太難受了,重復好多,請問我該如何簡化呢,或者該怎么傳入變量查詢,或者有什么其他方法簡化,請舉例,或演示部分,謝謝publicfunctionpostTreat(Request$request){$_page=$request->input("_page");//頁碼$_path=$request->input("_path");//第三級path$_sortType=$request->input("_sortType");//綜合類別$_sales=$request->input("_sales");//銷售優先$_priceSmall=$request->input("_priceSmall");//最低價$_priceBig=$request->input("_priceBig");//最高價$page=($_page-1)*4;//是否有價格區間限制if(empty($_priceSmall)&&empty($_priceBig)){//是否按銷量排序if(empty($_sales)){//是否有綜合排序判斷綜合類別if($_sortType=="composite"||$_sortType==""){//綜合或沒有$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->skip($page)->take(4)->get();}elseif($_sortType=="price_up"){//價格最低$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->orderBy('goods_price','asc')//價格最低->skip($page)->take(4)->get();}elseif($_sortType=="price_down"){//價格最高$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->orderBy('goods_price','desc')//價格最高->skip($page)->take(4)->get();}elseif($_sortType=="assess_down"){//評價最多//只有在走這個區間的時候,才需要關聯查詢評價的數量$data=DB::table('shop_goods')->leftJoin('shop_assess','shop_goods.goods_id','=','shop_assess.assess_gcode')->selectRaw('shop_goods.*,COUNT(shop_assess.assess_id)asassess_num')->where('shop_goods.goods_cid',$_path)->where('shop_goods.goods_status',1)//0未審核1審核通過2審核未通過->where('shop_goods.goods_state',0)//0已上架1已下架->where('shop_goods.goods_recycle',0)//0正常1回收站->groupBy('shop_goods.goods_id')->orderBy('assess_num','desc')->get();}elseif($_sortType=="publish_new"){//最新發布$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->orderBy('goods_time','desc')//最新發布->skip($page)->take(4)->get();}}else{$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->orderBy('goods_num','desc')//銷售倒序排列->skip($page)->take(4)->get();}}else{//是否按銷量排序if(empty($_sales)){//是否有綜合排序判斷綜合類別if($_sortType=="composite"||$_sortType==""){$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->whereBetween('goods_price',[$_priceSmall,$_priceBig])//價格區間->skip($page)->take(4)->get();}elseif($_sortType=="price_up"){$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->whereBetween('goods_price',[$_priceSmall,$_priceBig])//價格區間->orderBy('goods_price','asc')//價格最低->skip($page)->take(4)->get();}elseif($_sortType=="price_down"){$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->whereBetween('goods_price',[$_priceSmall,$_priceBig])//價格區間->orderBy('goods_price','desc')//價格最高->skip($page)->take(4)->get();}elseif($_sortType=="assess_down"){$data=DB::table('shop_goods')->leftJoin('shop_assess','shop_goods.goods_id','=','shop_assess.assess_gcode')->selectRaw('shop_goods.*,COUNT(shop_assess.assess_id)asassess_num')//統計評價的數量->where('shop_goods.goods_cid',$_path)->where('shop_goods.goods_status',1)//0未審核1審核通過2審核未通過->where('shop_goods.goods_state',0)//0已上架1已下架->where('shop_goods.goods_recycle',0)//0正常1回收站->whereBetween('shop_goods.goods_price',[$_priceSmall,$_priceBig])//價格區間->groupBy('shop_goods.goods_id')->orderBy('assess_num','desc')->get();}elseif($_sortType=="publish_new"){$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->whereBetween('goods_price',[$_priceSmall,$_priceBig])//價格區間->orderBy('goods_time','desc')//最新發布->skip($page)->take(4)->get();}}else{$data=DB::table('shop_goods')->where('goods_cid',$_path)->where('goods_status',1)//0未審核1審核通過2審核未通過->where('goods_state',0)//0已上架1已下架->where('goods_recycle',0)//0正常1回收站->whereBetween('goods_price',[$_priceSmall,$_priceBig])->orderBy('goods_num','desc')->skip($page)->take(4)->get();}}foreach($dataas$key=>$value){if($value->goods_num>10000){$value->goods_num=round(($value->goods_num)/10000,1).'萬';//將銷量轉換}}return$data;}
查看完整描述

2 回答

  • 2 回答
  • 0 關注
  • 355 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號