在储存过程中BOM表中反查是,因为是从子件开始递归查找其所有主件,直到最顶层,但生成的路径path列的值如下
path
C010100108\C03CF15901\B0101002C010100108\C03CF15901\B03CF159
前面左边一个刚好是子件,向右才是其主件,要如何才能将其颠倒过来方便生成目录树即变成
B0101002\C03CF15901\C010100108B03CF159\C03CF15901\C010100108
还是说递归时可以直接生成从父件到主件的路径,应该是不可以
储存过程的代码如下
BEGIN
WITH CTE
AS (
SE LECT 产品编码,
品名,
父件编码,
用量,
计量单位,
0 AS Levle,
Path=CAST(产品编码 AS VARCHAR(MAX))
FROM BOM
WHERE 产品编码 LIKE '%' + @whereflt + '%' --父件编码 is null
UNION ALL
SE LECT BOM.产品编码,
BOM.品名,
BOM.父件编码,
BOM.用量,
BOM.计量单位,
c.Levle + 1 AS Levle,
CAST(c.Path +'\'+BOM.产品编码 AS VARCHAR(MAX))
FROM CTE AS c
INNER JOIN BOM
ON c.父件编码 = BOM.产品编码
)
SE LECT *
FROM CTE
ORDER BY 父件编码;
END;
谢谢!