2013-01-08 150 views
0

这是一个树形结构的表。广度优先搜索查询在MYSQL

id parent_id 
1 0 
2 1 
3 8 
4 8 
5 1 
6 8 
7 6 
8 1 
9 2 
10 6 

我需要通过“广度优先”检索数据。

所以顺序应该是:1→(8→5→2)→(6→4→3)→9→(10→7)

实际上有一个另一列进行排序的节点的相同的深度。 8,5,26,4,310,7。 我排除它来简化这种情况。所以相同深度节点的序列:8,5,2,5,8,22,5,8 ...没关系。

enter image description here

+0

// hims056这是关于导航(菜单)。问题是从MYSQL中检索的数据顺序和HTML元素的顺序是不同的。我正在尝试将数据与HTML元素相同。 – Deckard

回答

1

广度优先搜索顺序只是ORDER BY depth_column_that_you_thought_is_irrelevant ASC,如果你不关心节点层(这你可能在BFS的大多数使用不需要)中的顺序。如果你真的关心让同一个家长的人一起去,那么ORDER BY depth, parent_id。你没有给出姐妹节点的明确优先级,所以不能帮助你。

此外,您的图表与您的数据不符,或者我无法弄清楚图表中id: 3, parent_id: 2行如何转换为3 < - 8或9 < - 2。

+0

我犯了一个错误,同时使数据随机(如实际数据)。我改变桌子。 – Deckard