2013-10-21 94 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,直到达到根。 –

相关问题