2012-04-20 31 views
1

說我有一個表的結構如下:最佳方式與孩子加入

+-------------+----------------+-----------+ 
| category_id | name   | parent_id | 
+-------------+----------------+-----------+ 
|   1 | foo   |   0 | 
|   2 | bar   |   0 | 
|   3 | baz   |   1 | 
|   4 | test   |   2 | 
|   5 | test1   |   3 | 
|   6 | test2   |   5 | 
+-------------+----------------+-----------+ 

沒有人有任何指針實現以下的輸出:

foo 
bar 
foo > baz 
bar > test 
baz > test1 
baz > test 1 > test2 

我如果有幫助,請打開更改我的模式,不確定它是否是存儲數據的最佳方法?

感謝

+0

你想達到什麼目的?你在那裏做什麼大事? – squarephoenix 2012-04-20 20:00:37

+0

@ techjunkie.css這些應該是「箭頭」,表示左側的類別是右側類別的父級。 'baz> test1'和'baz> test 1> test2'爲什麼'baz'在它前面沒有'foo>'? – lafor 2012-04-20 20:02:40

+0

? – squarephoenix 2012-04-20 20:29:00

回答

2

你可以嘗試通過父排序,然後按名稱:

SELECT * FROM category ORDER BY parent_id, name

這將返回按名稱排序的所有類別,根據自己的級別(父)。

1

Nested Set Model實現比簡單的父 - 子關係複雜一點,但它有助於解決這樣的問題。