我有一个像这样设置的物料清单表: item-parent
显示物料清单的最终结果是这样显示的:
item 1 - parent 0 item 2 - parent 1 item 3 - parent 1
最终结果也可能是多级的,如下所示:
item 3 - parent 0 item 4 - parent 3 item 76 - parent 3
它可以无限进行:
item 76 - parent 0 item 46 - parent 76 item 46 - parent 0 item 25 - parent 46
现在,我要么只是从数据库中获得1级:
SELECT * FROM bom WHERE parentId = $itemId (shorthand)
或从表中拉出每一行,并使用递归函数仅对所需行进行排序,但这显然效率不高,因为我可能只需要10行,但我拉出10,000条记录。递归函数的输出将只创建一个像这样的树:
item 1 item 2 item 3 item 4 item 76 item 46 item 25
我所知道的是,我从项目1开始。项目5的父级可以为11;项目5的父级可以为11。他们不必顺序进行。我想把所有的子树枝都放在树上。我如何在mysql中执行此查询?
早在2011年10月24日,有人 在DBA StackExchange中 发布了一个 有关MySQL中的树遍历的问题 。MySQL的SQL无法支持它。
在 回答该问题时 , 我写下了三(3)个存储过程( GetParentIDByID,GetAncestry和GetFamilyTree )。希望这些信息可以帮助您构建所需的内容。 ****