2013-10-21 131 views
1

我正在構建一個電子商務網站,其中類別管理扮演着重要角色。下面mysql從表的最後一個子行獲取父行

category_id | category_name | parent_category_id 
------------------------------------------------------ 
1   | Shoes   | NULL 
2   | Sports Shoes | 1 
3   | Fila Shoes  | 2 
4   | Black Shoes  | 3 

parent_category_id的類別表結構給出是CATEGORY_ID

我想從最後一個孩子的祖先走回頭路的外鍵引用。我的意思是這樣

黑皮鞋 - >斐樂鞋 - >運動鞋 - >鞋

+0

你應該搜索「mysql tree structure」,有很多類似的問題... – feeela

+1

可能是重複http://stackoverflow.com/questions/11064913/achieve-hierarchy-parent-child-relationship-in-an - 有效易行的方式 –

回答

0

使用這種設計,沒有辦法只有一個查詢要做到這一點,除非你知道您需要選擇的確切節點數量(在這種情況下,一個簡單的JOIN就可以實現)。

您可以爲每個節點執行一個查詢: SELECT parent_category_id,category_name WHERE category_id =;

如果您有很多節點並且經常執行此操作,您甚至可以考慮使用返回多個結果集的存儲過程來執行此操作。

當然事情在標準SQL中要簡單得多,但MySQL不支持遞歸查詢。

+0

感謝您花費寶貴的時間回答。但是無論你怎麼說我早就知道,我對JOIN有很好的瞭解。事情是我可能不知道孩子的深度。 – vinoth

+0

我相信你知道JOIN。如果你真的只想使用一個命令(而不是使用存儲過程),我建議你使用一個小技巧:只需添加一個表示當前行深度的列(當前行和根之間的dinstance)。讀取行的程序可以編寫正確的JOIN語句。但坦率地說,我不會這樣做:我會使用多個JOIN,直到達到根。 –

相關問題