存储过程 根据a,b表添加更新c表.~~~~~~~~~~~~~~~~~~

caoqinghua 2004-11-22 11:38:45
如题

数据库表如下
a 表
序号 所属单位 所属供应商
1 xxxx yyyy
2 cccc zzzz
3 bbbb hhhh

b 表
序号 货物 规格 计量单位 批号 货物失效日期 数量
1 a x z 20010101 2001-11-01 10
1 b x z 20010101 2001-11-01 20

2 c y q 20030506 2003-05-06 10
2 d w 5 20030506 2003-05-06 200

c 表
流水号 所属单位 所属供应商 货物 规格 计量单位 批号 货物失效日期 数量
1 xxxx yyyy a x z 20010101 2001-11-01 100

a 表中的序号和b 表中的序号是1对多的关系

我根据传递的"序号"参数 把 a,b表中的数据更新或者添加到 c 表中
1)如果c表中存在 相同的单位,相同的供应商,相同货物,相同批号 的数据,则 更新c表中的数量
2)如果 c表中没有 相同的单位,相同的供应商,相同货物,相同批号 的数据, 则,根据a,b表添加
到c表

help me

...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
八爪鱼-杭州 2004-11-23
  • 打赏
  • 举报
回复
select 流水号, 货物, 规格, 计量单位, 批号,货物失效日期,数量,
所属单位=(select 所属单位 from a where a.序号 = b.序号) ,
所属供应商=(select 所属供应商 from a where a.序号 = b.序号)
into #t
from b


insert into c(流水号, 货物, 规格, 计量单位, 批号,货物失效日期,数量,所属单位,所属供应商)
select 流水号, 货物, 规格, 计量单位, 批号,货物失效日期,数量,所属单位,所属供应商
from #t as t1,c as t2
where t1.流水号!=t2.流水号 or t1.货物!=t2.货物 or....

update c
set 数量=数量+select isnull( (select sum(数量) from #t where
where t1.流水号=t2.流水号 and t1.货物=t2.货物... ))
Angelnet 2004-11-23
  • 打赏
  • 举报
回复
收藏
qizhanfeng 2004-11-23
  • 打赏
  • 举报
回复
邹建的对
caoqinghua 2004-11-23
  • 打赏
  • 举报
回复
谢谢各位,zjsen(星愿) zjcxc(邹建) davorsuker39(大狐狸)
一会儿揭贴
zjcxc 元老 2004-11-23
  • 打赏
  • 举报
回复
应该先更新,再插入的,否则插入的数据也会被更新一次,降低了效率
davorsuker39 2004-11-23
  • 打赏
  • 举报
回复
select 流水号, 所属单位=(select 所属单位 from a where a.序号 = b.序号) ,
所属供应商=(select 所属供应商 from a where a.序号 = b.序号),货物, 规格, 计量单位, 批号,货物失效日期,数量
into #table
from b ---------使用中间表过渡
insert into c(流水号, 所属单位,所属供应商,货物, 规格, 计量单位, 批号,货物失效日期,数量)
select 流水号, 所属单位,所属供应商,货物, 规格, 计量单位, 批号,货物失效日期,数量
from #table as t1,c as t2
where t1.所属供应商<>t2.所属供应商 and t1.货物<>t2.货物 and t1.计量单位<>t2.计量单位 and t1.批号<>t2.批号
update c
set 数量=数量+(select isnull(sum(数量),0) from #table a where t1.所属供应商=t2.所属供应商 and t1.货物=t2.货物 and t1.计量单位=t2.计量单位 and t1.批号=t2.批号)
zjcxc 元老 2004-11-23
  • 打赏
  • 举报
回复
--处理的存储过程
create proc p_process
@序号 int
as
set xact_abort on
begin tran
--先更新已经存在的
update c set 数量=b.数量
from a,b,c
where a.序号=@序号 and b.序号=@序号 and a.序号=b.序号
and a.所属单位=c.所属单位 and a.所属供应商=c.所属供应商
and b.货物=c.货物 and b.批号=c.批号

--插入不存在的
insert c(所属单位,所属供应商,货物,规格,计量单位,批号,货物失效日期,数量)
select a.所属单位,a.所属供应商,b.货物,b.规格,b.计量单位,b.批号,b.货物失效日期,b.数量
from a,b,c
where a.序号=@序号 and b.序号=@序号 and a.序号=b.序号
and not exists(
select * from c
where a.所属单位=c.所属单位 and a.所属供应商=c.所属供应商
and b.货物=c.货物 and b.批号=c.批号)
源码下载地址: https://pan.quark.cn/s/48210ff050c9 在生成具备死区间隔的脉冲宽度调制(PWM)信号时,STM32微控制器主要运用高级定时器(例如TIM1、TIM8)或通用定时器(如TIM2、TIM3、TIM4),这些定时器因其丰富的功能特性,能够支持复杂的PWM信号输出。 在当前应用场景下,死区间隔被设定为1微秒,此设置旨在电机驱动场景中防止功率开关器件的直通状态,避免电流尖峰,从而保护整个电路系统。 同时,CH1、CH2、CH3三个通道之间的相位间隔为3微秒,这种相位调制方式可用于三相电机的控制,达成对电机转矩的精准调控。 为了使STM32的定时器能够正常工作在PWM模式,需要进行一系列配置操作。 这些操作通常包括以下环节:1. **定时器初始化**:设定定时器的预分频器(Prescaler)参数,目的是获得期望的计数速率,例如,当系统时钟频率为72MHz,而目标PWM频率为50kHz时,预分频器的值应为72M/50K=1440。 2. **自动重载值(ARR)配置**:自动重载寄存器(ARR)的数值决定了PWM信号的整体周期。 以周期为20μs(对应1/50kHz)为例,ARR的值应设为20-1=19。 3. **比较通道选择**:涉及CH1、CH2、CH3等通道,它们分别与TIMx_CCR1、TIMx_CCR2和TIMx_CCR3寄存器相联系,通过设定这些寄存器的具体数值,可以控制各个通道的PWM占空比。 4. **死区时间设定**:利用TIMx_BDTR寄存器中的DTG字段来设定死区时间。 对于1微秒的死区间隔,必须依据定时器的工作模式与系统时钟速率来计算适宜的DTG参数。 5. **定时器启动**:完成所有配置后,使能定时器,PWM波形将...
代码下载链接: https://pan.quark.cn/s/38779f6f0507 《美食推荐系统的设计与实现》是一篇专注于美食推荐系统构建与运作的学术研究论文,其核心探讨的是如何设计并构建一个美食推荐系统,以更好地满足用户对美食的多样化需求并提升整体体验。该论文涵盖了美食推荐系统的需求调研、系统架构规划、系统开发执行以及系统质量检验等多个关键环节。在需求调研部分,论文首先阐述了中国餐饮行业的演进态势和城市生活节奏的提速,并强调了人们对饮食选择多样性和优化效果的追求。接着,论文强调了美食推荐系统在满足用户美食需求方面的必要性和核心价值。在系统架构规划部分,论文详细描述了美食推荐系统的整体布局和各功能模块的设计,包括用户信息管理单元、美食资讯管理单元、团购活动管理单元和推荐算法单元等。此外,论文还介绍了系统的数据结构设计和数据库构建方案,并采用了PHP+MYSQL+APACHE技术平台进行系统开发。在系统开发执行部分,论文记录了系统的构建过程,涉及前端与后端开发、数据库设计构建、系统测试及调试等环节。在系统质量检验部分,论文展示了系统的评估结果,涵盖性能测试、功能验证和安全防护测试等。该论文全面呈现了美食推荐系统的构建过程,有效满足了用户对美食的个性化需求与优化目标,展现出显著的实用价值和广阔的应用潜力。知识点:1. 美食推荐系统的需求调研,涉及中国餐饮业的发展态势、城市生活节奏的加快,以及人们对饮食选择多样化和优化效果的追求。2. 美食推荐系统的架构规划,包括系统的整体布局和功能模块设计,数据结构设计,以及采用PHP+MYSQL+APACHE技术平台进行系统开发。3. 美食推荐系统的构建过程,涵盖前端与后端开发、数据库设计构建、系统测试及调试等环节。4. 美...

34,875

社区成员

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

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