关于ecshop扩展商品属性查询的另一种SQL语句写法
2016-07-07 15:03 来源:www.chinab4c.com 作者:ecshop专家
在书写php的查库的SQL语句是,执行效率是我们必须思考的一个问题,ecshop在实现属性筛选时官方的写法是: /* 扩展商品查询条件 */ if (!empty($filter_attr)) { $ext_sql = "SELECT DISTINCT(b.goods_id) FROM " . $ecs->table('goods_attr') . " AS a, " . $ecs->table('goods_attr') . " AS b, " . $ecs->table('goods') . " AS g " . "WHERE "; $ext_group_goods = array(); foreach ($filter_attr AS $k => $v) // 查出符合所有筛选属性条件的商品id */ { if ($v != 0) { $sql = $ext_sql . "a.attr_id = b.attr_id AND b.attr_value = a.attr_value AND a.attr_id = " . $cat_filter_attr[$k] ." AND a.goods_attr_id = " . $v; $ext_group_goods = $db->getCol($sql); $ext .= ' AND ' . db_create_in($ext_group_goods, 'g.goods_id'); } } } 我的另一种写法是: /* 扩展商品查询条件 */ $i=0; if ($filter_attr_arr) { /* 查出符合条件商品id */ $attr_con = ' 1 '; foreach ($filter_attr_arr as $k=>$v) { if ($i > 0) { $attr_table .= ', '.$ecs->table('goods_attr')." AS a".$i; $attr_where .= " AND a".$i.".goods_id = a".($i-1).'.goods_id'. " AND ( a".$i.".attr_id = '".$k."' AND a".$i.".attr_value = '$v' ) "; } else { $attr_table = ' '.$ecs->table('goods').' AS g, '.$ecs->table('goods_attr')." AS a0"; $attr_where = " WHERE g.goods_id = a0.goods_id AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND ( a0.attr_id = '".$k."' AND a0.attr_value = '$v') "; } $i++; } $sql = "SELECT DISTINCT(g.goods_id) FROM " . $attr_table .$attr_where; $col = $db->getCol($sql); $ext = ' AND ' . db_create_in($col, 'g.goods_id'); } } 两种方法的异同: 第一种官方的查库是多次查库,得出多组goods_id用and并在一起得到一个最终的条件 第二种方法的查库是一次查库,得出一个最终条件,第二种得出的最终goods_id的范围可能小得多,但用了多表关链的方法 两种方法熟优熟劣,仁都见仁智者见智,个人习惯于第二种方法,很久以前的代码翻出来供大家共亨一下 |
回答:
支持下~~ |
路过 支持一下 |
支持!! |
支持优化提速GO |
这样查询会快点。。 |
楼主看见把这个修正一下吧。2.71下测试,用你写的这个代码。属性筛选不能使用。希望你能测试一下 |
纯支持,想在首页实现调用相同属性的商品,结果没实现 。楼主有空是否可以请教下 |
楼主的速度确实比较快,不过有个问题,除了品牌和价格的筛选是正确的外,颜色尺寸的筛选结果丝毫没有起作用啊,望楼主贴个新版的出来2.7.1 |
关注一下,感觉很好! |
kwkwkwkwkwkwkwkwkw哈哈!!!! |
最近更新
常用插件
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
ecshop热门问答
ecshop热门资料
ecshop会员登陆
ecshop广告
ecshop消费品
ecshop微信公众平台
ecshopshoes模板
ecshop损坏
ecshop下货
ecshop条款
ecshop店铺
ecshop工行
ecshop看不见
ecshop商品页面title
ecshop环节
ecshop团购报名
ecshop电子邮件
ecshop录入品牌
ecshop中文版
分析ecshop分页
ecshopimport
ecshop独立服务器
ecshopjsp
ecshop句法
ecshop使用率
ecshopSocket
ecshop建材
ecshop装机必备
ecshopquestion
ecshop网站模板程序链接
ecshop服务公司
ecshop幻灯