做进销存库存表怎么设计合理,求教!

---____--- 2013-01-17 02:30:12

--目前库存表这样设计的
/*
ID 商品编号 商品名称 库存数量 占用数量 库位 备注
1 DC182 导轨 3 0 K01
2 DC187 AK 1 0 K05 */

--出库明细表
/*
ID 出库日期 出库单号 商品编号 商品名称 订单数量 出库数量 是否已出库
1 2013/1/17 KM1301170001 DC182 导轨 1
2 2013/1/17 KM1301170001 DC187 AK 1
3 2013/1/17 KM1301170001 DC187 AK 1
*/

/*
有以下几点不明白,谁能答疑一下,谢谢
1.库存表这样设计合理吗?
2.根据出库明细表的"商品编号"与"订单数量"去库存表占用数量,判断库存是否足够回写到出库明细表,这样合理吗?
3.要根据出库明细表生成一出库明细,怎么样生成
*/
...全文
1043 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
---____--- 2013-01-17
  • 打赏
  • 举报
回复
引用 8 楼 bbbbbben 的回复:
SQL code?12345678910111213UPDATE t2 SET 出库数量=CASE WHEN t1.库存数量-ISNULL(o.订单数量,0)<t2.订单数量 THEN t1.库存数量-ISNULL(o.订单数量,0) ELSE t2.订单数量 END from t1 ,t2 OUTER A……
我先测试一下,没有问题,两个贴子都马上结贴,谢谢!
我腫了 2013-01-17
  • 打赏
  • 举报
回复
UPDATE t2
        SET 出库数量=CASE WHEN t1.库存数量-ISNULL(o.订单数量,0)<t2.订单数量 THEN t1.库存数量-ISNULL(o.订单数量,0) ELSE t2.订单数量 END
    from  
        t1
        ,t2
		OUTER APPLY(SELECT 
							SUM(订单数量) AS 订单数量
						FROM t2 AS x
						WHERE x.商品编号=t2.商品编号
							AND x.ID<t2.ID
				) AS o 
     Where t1.商品编号=t2.商品编号
		And t2.是否已完成出库='否'
---____--- 2013-01-17
  • 打赏
  • 举报
回复
引用 6 楼 bbbbbben 的回复:
SQL code?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465USE testGO -->生成表t1 if object_id('t1') is not null d……
bbbbbben 在请教一个问题,如果出库信息表增加一个字段(是否已完成出库),只更新是"是否已完成出库"=否的,怎么修改,我SQL菜鸟!
我腫了 2013-01-17
  • 打赏
  • 举报
回复
USE test
GO


-->生成表t1

if object_id('t1') is not null 
	drop table t1
Go
Create table t1([ID] smallint,[商品编号] nvarchar(5),[商品名称] nvarchar(2),[库存数量] smallint,[占用数量] smallint,[库位] nvarchar(3),[备注] nvarchar(50))
Insert into t1
Select 1,N'DC182',N'导轨',3,N'0',N'K01',null
Union all Select 2,N'DC187',N'AK',3,N'0',N'K05',null

-->生成表t2

if object_id('t2') is not null 
	drop table t2
Go
Create table t2([ID] smallint,[出库日期] datetime,[出库单号] nvarchar(12),[商品编号] nvarchar(5),[商品名称] nvarchar(2),[订单数量] smallint,[出库数量] smallint,[备注] nvarchar(50))
Insert into t2
Select 1,'2013/1/17',N'KM1301170001',N'DC182',N'导轨',1,0,null
Union all Select 2,'2013/1/17',N'KM1301170001',N'DC187',N'AK',1,0,null
Union all Select 3,'2013/1/17',N'KM1301170001',N'DC187',N'AK',5,0,null




UPDATE t2
		SET 出库数量=CASE WHEN t1.库存数量-ISNULL(o.订单数量,0)<t2.订单数量 THEN t1.库存数量-ISNULL(o.订单数量,0) ELSE t2.订单数量 END
	from  
		t1
		,t2
	OUTER APPLY(SELECT 
						SUM(订单数量) AS 订单数量
					FROM t2 AS x
					WHERE x.商品编号=t2.商品编号
						AND x.ID<t2.ID
			) AS o
			

UPDATE t1
	SET 占用数量=(SELECT SUM(出库数量) FROM t2 WHERE t1.商品编号=t2.商品编号)
	


SELECT * FROM t1
SELECT * FROM t2

/*
ID     商品编号  商品名称 库存数量   占用数量   库位   备注
------ ----- ---- ------ ------ ---- --------------------------------------------------
1      DC182 导轨   3      1      K01  NULL
2      DC187 AK   3      3      K05  NULL



ID     出库日期                    出库单号         商品编号  商品名称 订单数量   出库数量   备注
------ ----------------------- ------------ ----- ---- ------ ------ --------------------------------------------------
1      2013-01-17 00:00:00.000 KM1301170001 DC182 导轨   1      1      NULL
2      2013-01-17 00:00:00.000 KM1301170001 DC187 AK   1      1      NULL
3      2013-01-17 00:00:00.000 KM1301170001 DC187 AK   5      2      NULL


*/
---____--- 2013-01-17
  • 打赏
  • 举报
回复
引用 4 楼 sz_haitao 的回复:
引用 1 楼 DBA_Huangzj 的回复:个人建议: 1、不要用ID,而改成一些复合主键,如商品编号+一些字段。 2、如果你觉得编写一些功能的时候发现有难度,那要考虑一下是否有不合理的地方了。我建议主表存放一些共用信息,和一些常用的信息,这样不用每次都关联表。子表尽量存放一些历史信息和变动情况。 用于关联,内部id要好于用户可见的编号吧 只有多系统合并时,……
商品编号,就是内部编号.ID只是行号而已, 求2楼SQL语句或存储过程,谢谢!
haitao 2013-01-17
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
个人建议: 1、不要用ID,而改成一些复合主键,如商品编号+一些字段。 2、如果你觉得编写一些功能的时候发现有难度,那要考虑一下是否有不合理的地方了。我建议主表存放一些共用信息,和一些常用的信息,这样不用每次都关联表。子表尽量存放一些历史信息和变动情况。
用于关联,内部id要好于用户可见的编号吧 只有多系统合并时,自动递增字段才有点问题了
我腫了 2013-01-17
  • 打赏
  • 举报
回复
庫存表:ID,商品編號,商品名稱,庫存總數量。 庫存明細表:ID,庫存表ID,庫存數量,庫位。 進出庫明細表:ID,庫存明細表ID,進出類型(1:進,2:出),進出數量,日期時間,操作員。 訂單:ID,...。 訂單明細表:ID,...。 訂單出庫明細表:ID,訂單明細表ID,進出庫明細表ID(類型為出的)。 .... 採購單:ID,...。 採購單明細表:ID,...。 採購單進庫明細表:ID,採購明細表ID,進出庫明細表ID(類型為進的)。
---____--- 2013-01-17
  • 打赏
  • 举报
回复

库存表:
ID	商品编号	商品名称	库存数量	占用数量	库位	备注	
1	DC182	导轨	3	0	K01				
2	DC187	AK	3	0	K05		
出库表: ID 出库日期 出库单号 商品编号 商品名称 订单数量 出库数量 备注 1 2013/1/17 KM1301170001 DC182 导轨 1 2 2013/1/17 KM1301170001 DC187 AK 1 3 2013/1/17 KM1301170001 DC187 AK 5 最后想得出以下结果,条件:根据出库明细表"商品编号"去库存表的"商品编号"判断订单数量与库存数量,然后更新"库存表-占用数量"及"出库信息表-出库数量",求SQL语句或存储过程,谢谢! 库存表: ID 商品编号 商品名称 库存数量 占用数量 库位 备注 1 DC182 导轨 3 1 K01 2 DC187 AK 3 3 K05 出库明细表 ID 出库日期 出库单号 商品编号 商品名称 订单数量 出库数量 备注 1 2013/1/17 KM1301170001 DC182 导轨 1 1 2 2013/1/17 KM1301170001 DC187 AK 1 1 3 2013/1/17 KM1301170001 DC187 AK 5 2
發糞塗牆 2013-01-17
  • 打赏
  • 举报
回复
个人建议: 1、不要用ID,而改成一些复合主键,如商品编号+一些字段。 2、如果你觉得编写一些功能的时候发现有难度,那要考虑一下是否有不合理的地方了。我建议主表存放一些共用信息,和一些常用的信息,这样不用每次都关联表。子表尽量存放一些历史信息和变动情况。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧