【发布时间】:2012-06-24 17:38:03
【问题描述】:
我有一个这样的表结构
mysql> SELECT id, name, parent_id FROM categories;
+-------+------------+-----------+
| id | name | parent_id |
+-------+------------+-----------+
| 15790 | Test | 0 |
| 15791 | Test2 | 0 |
| 16079 | Subtest | 15790 |
| 16080 | Subtest 2 | 15790 |
| 16081 | Subsubtest | 16079 |
+-------+------------+-----------+
现在我想查找每个孩子和兄弟姐妹的父母,并以正确的顺序将其返回以进行删除。
所以在这种情况下我的输出是:
Array
(
16081,
16080,
16079,
15791,
15790
)
我不能仅通过反转父 ID 来删除,因为这应该是可靠的走回树。
我也不能/不允许更改表格的结构。所以建立某种索引是必要的。
【问题讨论】:
-
抱歉,触发器是什么意思?
-
您能解释一下“正确的删除顺序”是什么意思吗?
-
@KeithRandall 当然:所有子类别(及其同级)必须在其父类别之前 删除。没什么特别的,但我不知道该怎么做。
-
@DanLee,当您尝试删除其子行之前的行时,这是由于外键约束错误吗?
-
选择语句中使用的标准是什么?您是否打算删除记录并且需要检查并删除任何子、孙等?会有孙子及以下吗?
标签: php mysql recursion parent children