我有一個使用鄰接列表模型存儲分層信息的表。 (使用自參照關鍵 - 比如下面這張表可能看起來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