以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- BOM反查时路径相反如何生成目录树 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99855) |
-- 作者:happyft -- 发布时间:2017/4/27 23:26:00 -- BOM反查时路径相反如何生成目录树 在储存过程中BOM表中反查是,因为是从子件开始递归查找其所有主件,直到最顶层,但生成的路径path列的值如下 path C010100108\\C03CF15901\\B0101002C010100108\\C03CF15901\\B03CF159 前面左边一个刚好是子件,向右才是其主件,要如何才能将其颠倒过来方便生成目录树即变成 B0101002\\C03CF15901\\C010100108 B03CF159\\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; 谢谢!
|
-- 作者:HappyFt -- 发布时间:2017/4/27 23:31:00 -- 自己搞定了,把它改一下即可: CAST(BOM.产品编码 +\'\\\' + c.Path AS VARCHAR(MAX)) 但是有个问题不知道怎么弄,就是由子件向上查时,因为不知道有多少层,所以子件为0层的话,主件层数难道只能显示为-1,-2,-3这样吗? 往下查是主件为0,子件层数为1,2,3...没问题. 谢谢!
|
-- 作者:有点色 -- 发布时间:2017/4/28 8:59:00 -- 回复2楼,没看懂你的意思。向上查的时候,如果没有父件,就停止,往下查,就是循环所有的子件就停止。
做具体实例说明你的问题。 |