以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  UPDATE 求和  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184219)

--  作者:nuoyan89
--  发布时间:2022/11/28 23:24:00
--  UPDATE 求和
老师,我点击执行时,提示b.月 和 b.使用类型  异常,请帮忙看看,谢谢

Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "UPDATE  a S et a.制造费用_基础设施费 = b.单价成本 * a.循环时间   From (Se lect Sum(单价成本) As 制造费用_基础设施费 From 油料成本明细) as b ,工序跟踪表 as a Where a.月份 = b.月 And b.使用类型 = \'按汇总算\' "
cmd.ExecuteNonQuery()

--  作者:有点蓝
--  发布时间:2022/11/29 8:27:00
--  
cmd.CommandText = "UPDATE  a Set a.制造费用_基础设施费 = b.单价成本 * a.循环时间   From (Select 月,,Sum(单价成本) As 制造费用_基础设施费 From 油料成本明细 where 使用类型 = \'按汇总算\' group by ) as b ,工序跟踪表 as a Where a.月份 = b.月 "
--  作者:nuoyan89
--  发布时间:2022/11/29 20:59:00
--  
老师,以下代码是因为分别写的没有合并而导致执行时间稍微长点吗?谢谢

Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "UPDATE  a s et  a.制造费用_水费 = b.费用基数 * a.循环时间  from 工序跟踪表 as a ,生产成本总表 as b where a.月份 = b.月份 and b.费用明细 = \'水费\' and b.项目 = \'制造费用\'"
cmd.ExecuteNonQuery()

Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "UPDATE  a1 s et  a1.制造费用_电费 = b1.费用基数 * a1.循环时间  from 工序跟踪表 as a1 ,生产成本总表 as b1 where a1.月份 = b1.月份 and b1.费用明细 = \'电费\' and b1.项目 = \'制造费用\'"
cmd1.ExecuteNonQuery()

Dim cmd2 As New SQLCommand
cmd2.C
cmd2.CommandText = "UPDATE  a2 s et  a2.制造费用_外协费用 = b2.费用基数 * a2.循环时间  from 工序跟踪表 as a2 ,生产成本总表 as b2 where a2.月份 = b2.月份 and b2.费用明细 = \'外协费用\' and b2.项目 = \'制造费用\'"
cmd2.ExecuteNonQuery()

Dim cmd3 As New SQLCommand
cmd3.C
cmd3.CommandText = "UPDATE  a3 s et  a3.制造费用_运输费 = b3.费用基数 * a3.循环时间  from 工序跟踪表 as a3 ,生产成本总表 as b3 where a3.月份 = b3.月份 and b3.费用明细 = \'运输费\' and b3.项目 = \'制造费用\'"
cmd3.ExecuteNonQuery()

--  作者:有点蓝
--  发布时间:2022/11/29 21:06:00
--  
执行一条要1秒,4条当然就要4秒了
--  作者:nuoyan89
--  发布时间:2022/11/29 21:12:00
--  
老师,3楼的还可以怎么优化呢?谢谢
--  作者:有点蓝
--  发布时间:2022/11/29 21:42:00
--  
没有什么可优化的了。

可以考虑到数据库给表加上必要的索引,比如经常用作查询条件的列:月份、费用明细等加上索引