【问题标题】:Sorting flat tree排序扁平树
【发布时间】:2013-02-22 03:27:43
【问题描述】:

我有一个树形结构的表,包含 lvl、lft 和 rgt 列。 最初,我有一个带有SELECT * FROM tree_table ORDER BY lft ASC 的扁平树,以便按树中的位置对其进行排序。 但是现在我有sort 列来对他们级别的节点进行排序。我怎样才能让树按它在树中的位置和它的重量同时排序? 我认为使用 MySQL 查询是不可能的,但是我如何使用 PHP 来获得它?

lft排序的表格数据示例

id | lft | rgt | level | sort
1 | 1 | 628 | 1 | 0
2 | 2 | 281 | 2 | 3
3 | 3 | 128 | 3 | 0
4 | 4 | 15 | 4 | 1
5 | 16 | 27 | 4 | 5
....

如果没有sort 列,我会以相同的顺序显示行,但现在我想得到这个:

id | lft | rgt | level | sort
1 | 1 | 628 | 1 | 0
2 | 2 | 281 | 2 | 3
3 | 3 | 128 | 3 | 0
5 | 16 | 27 | 4 | 5
4 | 4 | 15 | 4 | 1
....

【问题讨论】:

  • 您需要给我们一些数据和/或代码才能继续。

标签: php mysql tree


【解决方案1】:

好吧,根据你的例子,你可以得到你想要的结果:

SELECT * FROM tree_table ORDER BY level, Sort DESC

但我可能有点误解你的问题。

【讨论】:

  • 使用这个查询只会排序顶部节点,而不是它们的子节点。
  • @nucleartux 我想我只是不明白您提供的数据如何代表一棵树。我推荐 explainextended.com/2009/03/17/hierarchical-queries-in-mysql 来处理 MySQL 中的层次结构。也许这会帮助你实现你的目标
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 2021-03-29
  • 1970-01-01
  • 2015-03-26
  • 2018-12-30
  • 2023-02-08
  • 1970-01-01
  • 2014-03-15
相关资源
最近更新 更多