请教一个关于产品子结构的SQL语句
时间:2011-12-13
来源:互联网
有一个这样的产品结构:
支架1 由 材料1 + 材料2 组成
支架2 由 材料1 + 材料3 组成
支架3 由 支架1+材料4 组成
这样的一个产品结构,类似BOM,
建表SQL如下:
SQL code
==
现在的问题是,表中增加了一个数量字段,
支架1 由 2个材料1 + 3个材料2 组成
支架2 由 3个材料1 + 5个材料3 组成
支架3 由 4个支架1+1个材料4 组成
假如现在需要5个支架3,则计算需要:
5×4个支架1
5×1个材料4
--
5×4×2个材料1
5×4×3个材料2
想要这样的结果,函数该如何修改一下呢?谢谢
支架1 由 材料1 + 材料2 组成
支架2 由 材料1 + 材料3 组成
支架3 由 支架1+材料4 组成
这样的一个产品结构,类似BOM,
建表SQL如下:
SQL code
CREATE TABLE [dbo].[boms] ( piID varchar(20), --父ID picID varchar(20) --子ID ) GO insert into boms(piID,picID) values('001','0011') insert into boms(piID,picID) values('001','0012') insert into boms(piID,picID) values('0012','0013') insert into boms(piID,picID) values('0012','0014') insert into boms(piID,picID) values('0013','00133') insert into boms(piID,picID) values('0013','00134') insert into boms(piID,picID) values('00133','001331') insert into boms(piID,picID) values('00133','001332') go --通过以下函数可以实现查询下级的编码: create function f_getP(@piID varchar(20)) returns @re table(picID varchar(20),lev int,piID varchar(20),TFlag varchar(10)) as begin declare @l int set @l=0 insert @re select picID,@l,piID,'本级ID' from [boms] where piID = @piID while @@rowcount>0 begin set @l=@l+1 insert @re select a.picID,@l,a.piID,'下级ID' from [boms] a,@re b where a.piID=b.picID and b.lev=@l-1 and a.picID is not null end update @re set lev=@l-lev return end go declare @piID varchar(10) set @piID = '001' select * from dbo.f_getP(@piID)
==
现在的问题是,表中增加了一个数量字段,
支架1 由 2个材料1 + 3个材料2 组成
支架2 由 3个材料1 + 5个材料3 组成
支架3 由 4个支架1+1个材料4 组成
假如现在需要5个支架3,则计算需要:
5×4个支架1
5×1个材料4
--
5×4×2个材料1
5×4×3个材料2
想要这样的结果,函数该如何修改一下呢?谢谢
作者: yumanqing 发布时间: 2011-12-13
改动的大了,
二维和三维的区别,不仅仅是一点点哦.
二维和三维的区别,不仅仅是一点点哦.
作者: liuqian4243 发布时间: 2011-12-13
那该如何改呢,谢谢,在线等
作者: yumanqing 发布时间: 2011-12-13
我感觉你这个需要用程序来做.
第一步先求出支架3的情况,然后判断支架3中是否存在支架1或支架2
第二步再求出支架1或支架2的情况...
如此循环...知道求出的内容中不含有支架1.2.3...或者说求出的内容中在支架那个字段中不存在才结束.
第一步先求出支架3的情况,然后判断支架3中是否存在支架1或支架2
第二步再求出支架1或支架2的情况...
如此循环...知道求出的内容中不含有支架1.2.3...或者说求出的内容中在支架那个字段中不存在才结束.
作者: dawugui 发布时间: 2011-12-13
感觉是一个BOM路径的问题
作者: fredrickhu 发布时间: 2011-12-13
感谢dawugui
(爱新觉罗.毓华)
,程序代码是能写出来,递归循环,但觉得有些复杂,如果能借助数据库方便的统计出来,我想可能简单一些
(爱新觉罗.毓华)
,程序代码是能写出来,递归循环,但觉得有些复杂,如果能借助数据库方便的统计出来,我想可能简单一些
作者: yumanqing 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28