存储过程 根据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

...全文
187 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.批号)
内容概要:本文详细介绍了利用扰动观察法(Perturb and Observe, P&O)实现光伏供电系统中直流-直流升压变换器的最大功率点跟踪(MPPT)的Simulink仿真实现方法。通过对光伏阵列输出特性分析,构建了P&O算法的控制逻辑,结合Boost变换器模型,在Simulink环境中搭建完整的仿真系统,实时调整占空比以追踪最大功率点,有效提升光伏发电系统的能量转换效率。文中涵盖了系统建模、算法设计、参数整定及仿真结果分析全过程,验证了P&O算法在不同光照条件下的跟踪性能与稳定性。; 适合人群:具备电力电子、新能源发电基础知识,熟悉MATLAB/Simulink仿真环境,从事光伏系统控制或MPPT算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握P&O算法在光伏MPPT中的基本原理与实现流程;②学习基于Simulink的光伏系统建模与仿真方法;③为改进MPPT算法(如变步长P&O、结合模糊控制等)提供基础仿真平台;④应用于课程设计、科研项目或实际工程原型开发。; 阅读建议:建议读者结合仿真模型逐步理解控制逻辑,重点关注扰动步长、采样周期等关键参数对跟踪精度与响应速度的影响,并尝试对比其他MPPT算法(如增量电导法)以深化理解。
代码转载自:https://pan.quark.cn/s/0ce885e2bedb 《深入解析Discuz! X3.4源码》Discuz! X3.4是一款备受广大网站运营人员青睐的社区论坛软件,它凭借卓越的功能、可靠的性能以及用户友好的特性而闻名。这款开源软件支持用户依据自身需求进行二次开发,从而构建出个性化且功能完备的在线互动平台。在本文中,我们将细致研究Discuz! X3.4的关键特性、系统架构以及源代码剖析,旨在帮助开发者更深入地认识并运用这一高效工具。一、核心特性1. 强大的社区功能:Discuz! X3.4提供了包括论坛、博客、问答、家园在内的多种社区模块,用以满足用户多样化的需求。此外,其内置的积分系统、等级体系、勋章等激励措施,能够有效提升用户的参与热情。2. 安全性与稳定性:X3.4版本在安全防护和系统稳定性方面进行了诸多改进,涵盖强化SQL注入防护、XSS跨站脚本攻击防御,以及对PHP代码进行安全审查,确保论坛在高压并发场景下的稳定运作。3. 移动端支持:鉴于移动互联网的迅猛发展,Discuz! X3.4支持手机应用程序和移动网页访问,致力于提供卓越的用户体验,实现台式机与移动设备的无缝衔接。4. 高效的缓存机制:借助Memcached或Redis等高效缓存技术,能够减轻数据库负担,加快论坛的响应速度。5. SEO友好:Discuz! X3.4提供了丰富的SEO优化选项,例如自定义URL、关键词优化等,有助于提升论坛在搜索引擎中的可见度。二、架构设计1. MVC模式:Discuz! X3.4运用了MVC(Model-View-Controller)设计理念,将业务逻辑、数据模型和用户界面进行分离,从而简化代码的维护与扩展工作。2. 数据库...

34,874

社区成员

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

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