1

我正在建立一个电子商务网站,其中类别管理起着重要作用。类别表结构如下

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 的外键引用

我想从最后一个孩子回到祖先。我的意思是这样

黑色鞋-->菲拉鞋-->运动鞋-->鞋子

4

1 回答 1

0

使用这种设计,只有一个查询就无法做到这一点,除非您知道需要选择的节点的确切数量(在这种情况下,一个简单JOIN的技巧就可以了)。

您可以为每个节点执行一个查询: SELECT parent_category_id, category_name WHERE category_id = ;

如果您有很多节点并且经常执行此操作,您甚至可以考虑使用返回许多结果集的存储过程来执行此操作。

当然,标准 SQL 中的事情要简单得多,但 MySQL 不支持递归查询。

于 2013-10-21T11:36:20.373 回答