我有一个使用邻接列表模型存储分层信息的表格。该表格使用自引用键(如下所示的示例)。这个表格看起来可能很熟悉: 链接
什么是将上述数据“展平”的最佳方法,使其变成类似以下结构的内容?
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级层次结构。