我有一个使用邻接列表模型存储分层信息的表。 (使用自参照关键 - 比如下面这张表可能看起来familiar):将邻接列表层次结构展平为所有路径列表
category_id name parent
----------- -------------------- -----------
1 ELECTRONICS NULL
2 TELEVISIONS 1
3 TUBE 2
4 LCD 2
5 PLASMA 2
6 PORTABLE ELECTRONICS 1
7 MP3 PLAYERS 6
8 FLASH 7
9 CD PLAYERS 6
10 2 WAY RADIOS 6
什么是“平坦”上述数据弄成这个样子的最好方法是什么?
category_id lvl1 lvl2 lvl3 lvl4
----------- ----------- ----------- ----------- -----------
1 1 NULL NULL NULL
2 1 2 NULL NULL
6 1 6 NULL NULL
3 1 2 3 NULL
4 1 2 4 NULL
5 1 2 5 NULL
7 1 6 7 NULL
9 1 6 9 NULL
10 1 6 10 NULL
8 1 6 7 8
每一行是一个通过分层结构“路径”,除了存在对每个节点(不只是各叶节点)的行。 category_id列表示当前节点,“lvl”列是其祖先。当前节点的值也必须位于最右侧的lvl列中。 lvl1列中的值将始终表示根节点,lvl2中的值将始终表示lvl1的直接后代,依此类推。
如果可能,生成此输出的方法将使用SQL,并且可用于n层层次结构。
对于n层层次结构:是否提前知道? – 2009-04-21 19:53:51
不,我希望解决方案足够通用以适用于任何层次结构。但是 - 如果知道'n',是否有更优雅的解决方案? – 2009-04-22 14:32:18