我在存储多个分类数据时遇到问题。一个类别可以有任意大小的层叠深度。我认为创建更多具有关系的表不是一个好主意。存储此类分类数据的最佳方式是什么?

ex categories:
 -MainCategory1
     -subcategory1
            -subcategory11
            -subcategory12
            -subcategory13
                   --subcategory131
     -subcategory2
            -subcategory21
            -subcategory22
                   -subcategory221
            -subcategory23
                   -subcategory231
                        -subcategory2311
 -MainCategory2
     -subcategory21
            -subcategory211
                   -subcategory2131
                        -subcategory2131
            -subcategory212
            -subcategory213
                   -subcategory2131

最佳答案

需要定义父子结构

CREATE TABLE CATEGORIES (ID INT, PARENT_ID INT, NAME VARCHAR)

然后选择没有PARENT_ID
SELECT * FROM CATEGORIES WHERE PARENT_ID IS NULL

他们是主人,然后在你选择的每一层上
SELECT C.* FROM CATEGORIES C
INNER JOIN CATEGORIES C1 ON C1.PARENT_ID = C.ID

以获取当前记录的子项。
然后插入到类别中
INSERT INTO CATEGORIES
SELECT 1, NULL, 'MainCategory1'
UNION ALL SELECT 10, 1, 'subcategory1'
UNION ALL SELECT 11, 10, 'subcategory11'
UNION ALL SELECT 12, 10, 'subcategory12'
UNION ALL SELECT 13, 10, 'subcategory13'
UNION ALL SELECT 131, 13, 'subcategory131'
UNION ALL SELECT 2, 1, 'subcategory2'
-- ...AND SO ON

07-25 22:58
查看更多