java --级联操做(查询/更新)

1.表设计以下sql

2.测试数据以下测试


3.需求设计

查询某级别下面全部的子级别(假设级别最多只有3级),例如,某级别的id=1000000000,查询以下code

SELECT * FROM t_commodity_type tct WHERE tct.PARENT_TYPE_ID = 1000000000
UNION ALL
SELECT * FROM t_commodity_type tct2 WHERE tct2.PARENT_TYPE_ID in (SELECT tct3.COMMODITY_TYPE_ID FROM t_commodity_type tct3 WHERE tct3.PARENT_TYPE_ID = 1000000000)

4.若是存在多级的话,一直union all下去it

5.针对业务改善如上表设计io

很明显,一个现级id、一个父级id不能方便的查询,还须要增长一个原级id。class

这样,查询某个级别下面全部子级的时候,就能够挂上级别和原级id查询,这样方便些。nio


6.针对如上表的更新im

更新某个级别下面全部的use_flag,以下的sql假设该级别为1
数据

            UPDATE
            t_commodity_type tct
            SET
            tct.USE_FLAG = 0,
            tct.UPD_USER_ID = #{userId},
            tct.UPD_TIME = #{updTime}
            WHERE
            (
            tct.COMMODITY_TYPE_ID = #{commodityTypeId}
            AND 
            tct.COMMODITY_LEVEL = 1
            )
            OR
            (
            tct.PARENT_TYPE_ID = #{commodityTypeId}
            AND
            tct.COMMODITY_LEVEL = 2
            )
            OR
            tct.COMMODITY_TYPE_ID IN
            (
            SELECT
            tct3.COMMODITY_TYPE_ID
            FROM
            t_commodity_type tct3
            LEFT JOIN
            t_commodity_type tct2
            ON
            tct3.PARENT_TYPE_ID = tct2.COMMODITY_TYPE_ID
            WHERE
            tct3.COMMODITY_LEVEL = 3
            AND
            tct2.PARENT_TYPE_ID = #{commodityTypeId}
            )
相关文章
相关标签/搜索