2011-09-02 79 views
0

我有一個表,其中存儲了父級id的類別。以下是表結構 我需要的是讓家長和在單個查詢ID 4的細節,而不會PHP遞歸Mysql查詢在單個查詢中獲取父級詳細信息

id | CategoryName | parentid 
1  Web   0 
2  Software  0 
3  PHP   1 
4  Arrays   3 
+0

可能重複的變化[PHP/MySQL的:檢索在鄰接表模型的單一路徑(http://stackoverflow.com/questions/3627878/php-mysql-retrieve -a-single-path-in-the-adjacency-list-model) –

+0

你的意思是說你想檢索完整的繼承鏈嗎? 'child - > parent - > parent - > parent - > ... 0'?沒有遞歸就無法完成。 –

+0

雅,這是我一直在尋找..謝謝邁克爾.. –

回答

3

自連接應足以在這裏。您的目標是將自己的表加入表中,同時將主行的parentid與其父行的id相關聯。

SELECT 
    me.id AS me_id, 
    me.CategoryName AS me_category, 
    parent.id AS parent_id, 
    parent.CategoryName AS parent_category 
FROM 
    tablename me JOIN tablename parent ON me.parentid = parent.id 
WHERE me.id = 4 
+0

+1我剛纔提出的建議。 –

+0

感謝邁克爾的回覆,但問題。根據你的查詢,我只能得到2個級別 –

+0

@Anish Joseph你需要解釋你的意思是什麼__數量的levels_。您問題中的示例表格沒有說明這一點。您顯示從小孩到父母的1:1關係。 –

0

會的

select * from categories t1 join categories t2 where t1.parentid=t2.id 

工作的你

+0

不,所有的數據都在同一個表中,沒有't1'或't2' –

+0

@Rikudo Sennin t1和t2是別名,它是自加入。 – varela

相關問題