注册 登录
编程论坛 SQL Server论坛

求个算法--BOM物料和数量查询方法

steven1013 发布于 2010-08-11 20:55, 1531 次点击
BOM物料和数量查询方法

表结构如下”
itemno        f_itemno   f_qty     qty
本层物料编码  父件编码   父件数量  本层数量

求一个算法,可以把bom中的所有物料都查询出来,并且知道每个物料的数量!
当输入100套的时候,下面各个子物料需求多少?


谢谢!!
7 回复
#2
qingshuiliu2010-08-12 14:29
不理解题意,不知道是几张表啊?
#3
ironlyl2010-08-12 15:10
你能详细的说一下,你的数据表的名字,并且每张数据表包含些什么字段,这样就好帮你处理了。
#4
steven10132010-08-13 21:27
不好意思!我再描述下!

1、所有的bom数据都保持在一张表中,表名叫BOM。
2、BOM表结构如下:
   CREATE TABLE [dbo].[bom](
    [id] [int] NOT NULL,
    [itemno] [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [msunit] [varchar](12) COLLATE Chinese_PRC_CI_AS NULL,
    [qty] [numeric](18, 8) NULL,
    [f_itemno] [varchar](30) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [f_msunit] [varchar](12) COLLATE Chinese_PRC_CI_AS NULL,
    [f_qty] [numeric](18, 8) NULL
  )
  解释如下:
    itemno:物料编码
    msunit:计量单位
    qty:数量
    f_itemno:父件编码
    f_msunit:父件单位
    f_qty:父件数量
  例如:举个简单的例子,比如一层BOM
       A

B(2)    C(3)

A是由2个B和3个C组成的,那么BOM是这样存储的!

  itemno  msunit  qty  f_itemno  f_msunit  f_qty
   B      PCS      2    A          PCS       1
   C      PCS      3    A          PCS       1

现在我想求出整个BOM中,几个物料,各自是多少数量?比如上面的例子:
A  :1
B  :2
C  :3
当然,如果BOM是3层,或者更多曾,如何做???

谢谢!!!!

#5
qingshuiliu2010-08-13 22:50
如果子物料恰好都可以做成完整的父物料的话,即不存在完整的父物料以外的子物料。
select  t.itemno,  sum(t.qty) as 子物料数量,  sum(t.f_qty) as 父物料数量
from BOM  t  group by t.itemno


[ 本帖最后由 qingshuiliu 于 2010-8-13 22:52 编辑 ]
#6
steven10132010-08-14 12:17
谢谢版主!!!!

如果3层呢,比如B下面由4个D组成,那不就不对了??
按照这个算法
D只需要4个,
但是实际上,
D需要2*4=8个!!!
#7
qingshuiliu2010-08-14 19:54
恩,如果是这样的,的确不能这样
你给个完整的三层样本表,让大家再看看
#8
woboy2010-08-26 21:59
顶一个,我也想学习
1