2011-09-02 62 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

相关问题