无限分类的删除操作

ywq0127 2013-09-16 03:36:34
通过父ID关联的无限分类表,如果要删除其中的某一时,怎么删除它的所有后代呢?
以前版主写过 不用递归构造树型数组,所以这里看是否能有不用递归的方法能找出所有的后代元素可用于删除
...全文
193 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
burt123 2013-09-18
  • 打赏
  • 举报
回复
左右值 + 上下值 就不用递归了 儿子找爸 上下值 祖宗找下面 左右值
ywq0127 2013-09-18
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
找到孤儿 SELECT id FROM 表 where pid not in (select id from 表) 后删除对应的记录 需要在循环中进行,因为每次删除就可能有新的孤儿产生 大致这样:

do {
  $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)');
  list($g) = mysql_fetch_row($rs);
  mysql_query("delete from 表 where id in (g)");
}where(mysql_affected_rows());
这也是个思路,不过这也进行多次的查询与删除操作,而且还有子查询。
xuzuning 2013-09-17
  • 打赏
  • 举报
回复
找到孤儿 SELECT id FROM 表 where pid not in (select id from 表) 后删除对应的记录 需要在循环中进行,因为每次删除就可能有新的孤儿产生 大致这样:

do {
  $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)');
  list($g) = mysql_fetch_row($rs);
  mysql_query("delete from 表 where id in (g)");
}where(mysql_affected_rows());
ywq0127 2013-09-16
  • 打赏
  • 举报
回复
引用 1 楼 ahui_lcm 的回复:
不用递归的话,这个问题我不会。希望楼下各大牛给出答案。 我特别想问一个问题:“在实际的应用中,是否有这种需求?项目经理不让你用递归?” 不以解决问题为目的的自寻烦恼都是耍流氓。。。哈哈。。。
当然是没有强行规定,只是想找出能有其他的路径达成目的。就像没看见版主的实现过程前,构造树形数组也一直以为必须要递归
ahui_lcm 2013-09-16
  • 打赏
  • 举报
回复
不用递归的话,这个问题我不会。希望楼下各大牛给出答案。 我特别想问一个问题:“在实际的应用中,是否有这种需求?项目经理不让你用递归?” 不以解决问题为目的的自寻烦恼都是耍流氓。。。哈哈。。。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧