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