商品的sku就不说了。
看了一些网上的设计案例,都是添加一个商品,然后生成一堆sku
这边的设计是一个sku就是一个商品,然后通过联合属性关联起来。
一共是四个表:
1.属性集表  属性分为无联合、sku联合和搜索联合
         (搜索联合是sku联合里的特例,比如服装的颜色和尺码都是sku属性,但是相同颜色不同尺码的只展示一件,因此颜色就是搜索联合)2.商品表
3.商品联合表 1:1  具有相同的sn的商品id联合在一起
4.商品属性表 1:N现在的问题就是在搜索那儿,搜索的规则是
1.具有搜索联合属性的商品,相同属性值的只显示一个;
2.没有搜索联合,而有sku联合的,全部显示;
3.无联合的,显示全部;
4.无属性值的,显示全部;当前的策略是对这几个表进行关联查询再合并,然后分页显示
瓶颈就在对上述规则的合并:
group by `goods_combine`.`sn`,
  (case when isnull(GA.`attribute_id`) then `goods_combine`.`goods_id` else GA.`attribute_id` end),
  (case when GA.`value` then `goods_combine`.`goods_id` else GA.`value` end)由于涉及分页等,也不能把这一块逻辑放到程序里解决。
不知道是表设计不对,还是sql还有突破点,求意见及建议!

解决方案 »

  1.   


    搜索规则和大多数的电商的都差不多。
    例如衣服,颜色是搜索联合,尺码是sku联合。
    一件衣服有红蓝两色,尺码有m、xl和xxl三种
    这样商品表就有2×3就个商品
    商品联合表这六个商品的sn一样
    搜索结果就只有两件:红色和蓝色(尺码不过滤的话就随意)如果这件衣服没有把颜色设置为搜索联合属性,出来的就是6件
      

  2.   

    这个选择逻辑一般是在程序中实现,不是在数据库端,在程序中根据条件生成相应的SQL语句。