我正在建立一个电子商务网站,其中类别管理起着重要作用。类别的表结构如下所示
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的外键引用
我想从最后一个孩子回溯到祖先。我的意思是这样的
黑鞋 - > Fila Shoes - >运动鞋 - >鞋
答案 0 :(得分:0)
使用这种设计,只有一个查询无法做到这一点,除非您知道需要选择的确切节点数(在这种情况下,一个简单的JOIN
就可以了。)< / p>
您可以为每个节点执行一个查询: SELECT parent_category_id,category_name WHERE category_id =;
如果您有很多节点并且经常执行此操作,您甚至可以考虑使用返回许多结果集的存储过程来执行此操作。
当然,标准SQL中的事情要简单得多,但MySQL不支持递归查询。