美文网首页
DWB商品明细宽表建立之商品分类问题

DWB商品明细宽表建立之商品分类问题

作者: Eqo | 来源:发表于2022-05-20 20:24 被阅读0次
    • 背景介绍

    商品分类的业务解读.png

    在提交商品的种类的时候,一般会有三个种类 大中小 是下钻类型,
    正常情况:每个商品都会提交到小类当中
    非正常情况:每个商品插入的时候,大类,中类,小类都有 情况很复杂

    需求查出每个商品的所属小类,中类,大类

    商品分类理论和实际差距考量--sql技术实现.png image.png

    商品明细宽表主要有一下组成

    • 核心表是dim_goods 记录了商品的信息 id store_class_id(商品分类id)
    • 商品分类表 dim_goods_class 主要字段 (id name level pid)
      -品牌表 dim_brand 记录了商品的品牌名称

    构建商品明细表时候,我们需要的是3类结果:商品小类、商品中类、商品大类。
    因此在编写join的时候,我们需要关联3次,实际中的join情况因为分为下面3种:
    ==如果level=3,才会关联到level=2 ,再去关联level=1==
    ==如果level=2,关联到level=1,结束==
    ==如果level=1,结束==
    结束指的是,已经到大类级别了,没有parent_id了。就是执行join,结果也是为空。
    这样导致的结果是:查询出来的3级分类会形成==错位==。如:
    一个商品level=2,只能查询出来中类、大类,但是根据上述join的方式,却把
    中类当成了小类,大类当成了中类,把null当成了大类。
    那么==在查询结果取值返回的时候,一定要进行条件判断了,使用case when语句==。避免错误。

    核心代码

    --商品小类 如果class1.level=3,说明这个商品第一级就是小类
        CASE class1.level WHEN 3
            THEN class1.id
            ELSE NULL
            END as min_class_id,
        CASE class1.level WHEN 3
            THEN class1.name
            ELSE NULL
            END as min_class_name,
        --商品中类  如果class1.level=2,说明这个商品第一级就是中类
        CASE WHEN class1.level=2
            THEN class1.id
            WHEN class2.level=2
            THEN class2.id
            ELSE NULL
            END as mid_class_id,
        CASE WHEN class1.level=2
            THEN class1.name
            WHEN class2.level=2
            THEN class2.name
            ELSE NULL
            END as mid_class_name,
        --商品大类  如果class1.level=1,说明这个商品第一级就是大类
        CASE WHEN class1.level=1
            THEN class1.id
            WHEN class2.level=1
            THEN class2.id
            WHEN class3.level=1
            THEN class3.id
            ELSE NULL
            END as max_class_id,
        CASE WHEN class1.level=1
            THEN class1.name
            WHEN class2.level=1
            THEN class2.name
            WHEN class3.level=1
            THEN class3.name
            ELSE NULL
            END as max_class_name,
    

    相关文章

      网友评论

          本文标题:DWB商品明细宽表建立之商品分类问题

          本文链接:https://www.haomeiwen.com/subject/qrdtprtx.html