求教 关于数据库删除的问题

#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