在mysql上反向递归树菜单

时间:2014-07-29 21:09:04

标签: mysql sql tree

我的网站上有一个非常简单的递归类别树表

id
name
parent_id

通常人们希望将父母的整棵树展示给他们的孩子

在我的情况下,我有孩子的ids,我需要做反过来,从孩子到父母创建树

假设我有以下树:

1 - Computer
 2 - Storage
  5 - HDD
  6 - SSD
 3 - Motherboard
  7 - AMD
  8 - Intel
 4 - Graphics Card  
  9 - Nvidia
  10 - AMD

我有子类别6和10的ID

6 - SSD
10 - AMD

在一个选择中我需要检索这些类别6和10的所有父项以创建这样的树:

1 - Computer
 2 - Storage
  6 - SSD
 4 - Graphics Card  
  10 - AMD

那么,我应该怎么做?

1 个答案:

答案 0 :(得分:0)

我认为这可以帮到你:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

如果您知道子级别的最大数量,例如3,您可以执行以下操作:

SELECT t1.id, t1.name, t2.id, t2.name, t3.id, t3.name
FROM table t1
INNER JOIN table t2
    ON t1.parent_id = t2.id
INNER JOIN table t3
    ON t2.parent_id = t3.id
WHERE t1.id IN (6, 10)