0

我从使用邻接模型构建主题层次结构的数据库表中获取了一组数据。每条记录包含以下字段:

  • 'id' - 一个唯一的 AI id。
  • 'name' - 显示名称。
  • 'parent_id' - 父主题的 id(对于根主题可以为空)

如您所料,该数组来自未嵌套并按 id 排序的数据库。'id' 字段是随机的和随意的,不能依靠它来产生有用的订单。我正在寻找一种使用 parent_id 对数组进行排序的方法,以便它具有正确的邻接顺序,但最终结果不会嵌套到子数组中。该列表如下所示:

  • 根主题A
  • 主题1
  • 主题2
  • ATopic2 的子 1
  • ATopic2 的 Child2
  • 主题3
  • 根主题B
  • BTopic1
  • BTopic2
  • 等等

任何帮助或指向示例的指针(即使是不同的语言)将不胜感激。

4

1 回答 1

0

例如,您可以添加一个字段,sort在其中存储类别中相同 ID 的顺序。

另一种解决方案是(在 SQL 中)通过ORDER BY parent_id, id或将两者结合ORDER BY sort使用 JOIN 对它们进行排序(未测试):

SELECT object.id, object.sort, parent.id, parent.sort
FROM objects AS object
LEFT JOIN objects AS parent ON object.parent=parent.id
ORDER BY parent.sort, object.sort;

假设这objects是你的表名,同一个表object作为主对象,parent作为它的父对象(你需要它来获取sort父对象)。

于 2013-03-19T11:09:32.360 回答