数据表结构如下:|category|CREATETABLEcategory(idint(11)NOTNULLDEFAULT'0',pidint(11)DEFAULTNULL,titlevarchar(50)COLLATEutf8_unicode_ciDEFAULTNULL,namevarchar(50)COLLATEutf8_unicode_ciDEFAULTNULL,PRIMARYKEY(id))ENGINE=MyISAMDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci问题:现在每一个分类都可以是无限级,随便点击一个全部,展现所有当前分类下面的子分类数据。比如:点击了食品分类逻辑:食品中有水果,蔬菜,水果里有苹果,香蕉,蔬菜里有西蓝花,白菜,等等。点击食品后,怎么把苹果,香蕉,西蓝花,白菜的所有数据展现出来?也就是说,不管点击哪个分类,都把当前分类下面的所有子分类下面的数据都返回。请问怎么搞呢?(PHP)
2 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
category表里加个字段path,ALTERTABLE`category`ADDCOLUMN`path`varchar(255)NULLDEFAULT0AFTER`name`;以逗号逐级分隔所有父类,idpidnamepath10食品021水果0,131蔬菜0,142苹果0,1,2查询所有食品子类SELECT*fromcategorywhereFIND_IN_SET('1',`path`);
慕容森
TA贡献1853条经验 获得超18个赞
可以参考基于closuretable的存储方案,即加一个关联表,存储两个类别之间的层级距离。然后查询所有到该类别距离大于0的所有类别,就是你要查找的所有子类。
添加回答
举报
0/150
提交
取消