【发布时间】:2011-10-20 01:16:55
【问题描述】:
我有一个如下所示的目录表:
- 身份证
- Parent_ID
- 章节
- Display_Order
因此,每一行都是一个章节标题,但章节中可以有章节,章节中也可以有章节。因此,上表允许我维持这些关系。
如果一个章节没有父章节,即它不是任何其他章节的子章节,则 Parent_ID 为“Null”。如果一个章节确实有父章节,则它的 Parent_ID 设置为父章节的 ID。
由于一个章节内可以有多个子章节,这些子章节的顺序通过Display_Order 列进行管理; 1是第一,等等。
谁能建议一个简洁的 SQL 查询,让我可以选择整个表,并产生上述结果?本质上,我正在寻找一个反映章节实际层次结构的结果集。 ASCII 目录如下!
Chapter
-- Chapter
---- Chapter
---- Chapter
---- Chapter
-- Chapter
---- Chapter
---- Chapter
Chapter
Chapter
等等
【问题讨论】:
-
关卡数量是否已知?
-
单个查询只能返回 Display_Order 中的所有结果。然后你只需要遍历结果并根据他们的父母来识别它们吗?如果你不能让它工作,可能会查看邻接列表模型:sitepoint.com/hierarchical-data-database。
-
更好的是那篇文章下一页提到的“修改的预排序树遍历”方法。这种方法允许他在一个简单的查询中获得完整的层次结构。 sitepoint.com/hierarchical-data-database-2
-
@Lumbendil 级别数未知,也无法固定,因为目录需要非常灵活。
标签: php mysql hierarchical-data tableofcontents