删除进货明细表中的多条产品记录,库存表中对应产品库存减少,请问这样的语句怎么写啊?

kucao 2016-05-03 10:43:38
[库存表]
ID 产品ID 库存处理
1 2 20
2 3 15
3 4 30

[进货明细表]
ID 产品ID 数量
1 2 10
2 2 10
3 3 15
4 4 15
5 4 15

可以看到进货表的总和就是库存表(假设,现实肯定有出货表), 现在我在前台,
批量删除了[进货明细表] 中的 ID 为:5,3,1 的记录,我想让[库存表] 中对应的产品库存也要调整为如下:
[库存表]
ID 产品ID 库存处理
1 2 10
2 3 0
3 4 15
请问这样的SQL语句怎么写啊? 非常感谢!
...全文
348 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 版主 2016-05-04
  • 打赏
  • 举报
回复
客气了
kucao 2016-05-04
  • 打赏
  • 举报
回复
@wmxcn2000 非常感谢又帮我解决了个问题! @yooq_csdn 谢谢提醒, 我这个是打算用于特殊情况下的处理, 实际上肯定是有 入库表和出库表的,非常感谢!
yooq_csdn 2016-05-04
  • 打赏
  • 举报
回复
提醒一下楼主,我认为这样的设计思路不好。 进货明细表:用来记录进货情况,如果不是录入错误不建议因为出库而修改这个表。
yooq_csdn 2016-05-04
  • 打赏
  • 举报
回复

update 库存表
set 库存处理=库存处理-b.数量 
from 库存表 a join (select 产品ID,sum(数量) 数量 from 进货明细表 where id in (1,3,5)  group by 产品ID )b on a.产品ID=b.产品ID

卖水果的net 版主 2016-05-04
  • 打赏
  • 举报
回复

create table [库存表](ID int, 产品ID int , 库存处理 int )
insert into [库存表] values
(1, 2, 20),(2, 3, 15),(3, 4, 30),(4, 5, 200)
go
create table [进货明细表](ID int, 产品ID int, 数量 int)
insert into [进货明细表] values
(1, 2, 10),(2, 2, 10),(3, 3, 15),(4, 4, 15),(5, 4, 15)
go
print '计算前:'
select * from [库存表]
go
update A set A.库存处理 = A.库存处理 - B.数量
from [库存表] A , (select 产品ID , sum(数量) 数量 from [进货明细表] group by 产品ID) B
where A.产品ID = B.产品ID
go
print '计算后:'
select * from [库存表]
go
drop table [库存表] , [进货明细表]
go

计算前:
ID          产品ID        库存处理
----------- ----------- -----------
1           2           20
2           3           15
3           4           30
4           5           200

(4 行受影响)


(3 行受影响)
计算后:
ID          产品ID        库存处理
----------- ----------- -----------
1           2           0
2           3           0
3           4           0
4           5           200

(4 行受影响)


807254150 2016-05-03
  • 打赏
  • 举报
回复
循环明细表,查出产品id和数量,然后去对应的产品库存表进行删除

34,838

社区成员

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

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