#1 改变命运2023
因为我之前建数据库表建的不好了,但是现在再去改数据库表结构已经很麻烦了。我的数据库表是这样建的:一级类别:id、c1name二级类别:id、c1name、c2name、三级类别:id、c2name、c3name。产品表:id、c1name、c2name、c3name.其它字段省略。现在问题出现了。我现在做类别的删除操作功能。所以我如果想删除一级类别,就必须将一级类别下的二级类别、三级类别,产品表中的产品类别也相应的删除了。我的问题是,我怎么删除类别下的所有类别。比如二级类有很多,三级类别也有很多。这时如果查一下一级类别下的二级类别的话,会是一个数组。因为二级类别很多然后可以设置where 条件语句为数组进行循环删除吗?还是其它什么。谢谢。
2012-05-14 14:13:13
#2 wltony
先 findAll(array("c1name"=>$c1name)) 二级分类 得到结果 c2name数组 implode 一下
直接删除二级分类所包含的产品 delete from 产品表 where c2name in($c2name)
再用查找所得 c2name 去查找三级分类
findAll(c2name in($c2name)) 得到三级分类 c3name
delete from 三级分类表 where c2name in($c2name)
delete from 二级分类表 where c1name=$c1name
delete from 一级分类表 where c1name=$c1name
delete from 产品表 where c3name in($c3name)
再删除一级分类所包含的产品
2012-05-14 15:00:48
#3 wltony
PS 一下,如果你的数据量多,建议还是修改下多级分类结构,这样以后也方便维护
2012-05-14 15:04:00
#4 改变命运2023
wltony 发表于 2012-5-14 15:04
PS 一下,如果你的数据量多,建议还是修改下多级分类结构,这样以后也方便维护 ...
嗯,谢谢朋友提醒,以后会优化数据结构的,但是现在再去改,其它有很多地方也要跟着改。所以下一次我就重新做一个,但是这个问题怎么解决呢?
2012-05-14 17:22:33
#5 改变命运2023
wltony 发表于 2012-5-14 15:00
先 findAll(array("c1name"=>$c1name)) 二级分类 得到结果 c2name数组 implode 一下
直接删除二级分类所包 ...
刚才没看见,谢谢您的耐心解答{:soso_e113:}
2012-05-14 17:24:12