2011-05-17 60 views
2

說我有如下表:MySQL - 如何查詢樹?

TABLE: category 
- category_id (PK) 
- parent_id (FK) 
- name 

鑑於CATEGORY_ID的值,我該如何返回給定的CATEGORY_ID及其所有後代?

+0

可能的重複:http://stackoverflow.com/questions/5291054/hierarchical-sql-problem – ChrisWue 2011-05-17 22:54:00

回答

3

如果你想要一個單一的級別,你會做一個SELECT條件category_id = id OR parent_id = id - 但與MySQL,你不能得到一個單一的查詢完整的樹。

可以編寫一個存儲過程來通過所有的中間結果,並拿起子的孩子,但這真的不是很整潔。

取而代之,您可以重新設計您的表格。在MySQL開發人員網站上,有關於如何將分層數據存儲在表中的nice article,並提供了比簡單地使用parent_id更加靈活的設計。

+0

+1鏈接到那篇文章,我正在尋找它,並將發佈它,我自己。 – 2011-05-17 22:59:55

+0

更多的程序員會在早些時候學到這些嗎? – staticsan 2011-05-18 02:23:19