请教一个关于产品子结构的SQL语句
有一个这样的产品结构:
支架1 由 材料1 + 材料2 组成
支架2 由 材料1 + 材料3 组成
支架3 由 支架1+材料4 组成
这样的一个产品结构,类似BOM,
建表SQL如下:
==
现在的问题是,表中增加了一个数量字段,
支架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如下:
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
想要这样的结果,函数该如何修改一下呢?谢谢
...全文
相关推荐
sql语句妙用,各种sql语句的详细用法与讲解
sql语句妙用,各种sql语句的详细用法与讲解 ,使得程序运行的更加流畅。主要针对一些高效sql语句的解释。
NL2SQL:利用FOL和语法分析构建自然语言到SQL的查询接口
自然语言处理接口(NLP Interface)是一类特殊的软件组件,它作为用户和计算系统的中间层,将用户用自然语言表达的指令转换成计算机能够理解和执行的机器指令。它的主要作用包括简化用户与复杂系统之间的交互,以及将人类的自然语言转换为结构化的数据或查询语句,使得用户无需直接了解系统的内部逻辑。接口在数据查询中的应用可以具体体现在将自然语言输入转换为相应的SQL查询语句,以供数据库执行。这种技术特别适合那些不熟悉SQL语言的非技术人员,因为它大大降低了他们进行数据查询的难度。
【三.大模型实战应用篇】【5.自然语言转SQL:AI与数据库的无缝对接】
自然语言转SQL(Natural Language to SQL)是一种将人类自然语言(比如中文或英文)转换为数据库查询语言(SQL) 的技术。简单来说,就是让用户可以用“人话”告诉数据库要做什么,而不是直接写SQL代码。这种技术的核心目标是让非技术人员也能轻松访问和分析数据库,减少对SQL编程的依赖。
Oracle Sql语句转换成Mysql Sql语句
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
一个简单的sql循环语句脚本
一个简单的sql循环语句脚本



