请教:update语句如何进行书写?

cyxin2121921 2009-10-09 05:27:06
我有两个表
cwb和dinge表他们含有相同的字段:(物料编码c(20),物料名称c(30),规格型号c(30),计量单位c(10),数量n(10,2),计划单价n(10,2),计划金额n(10,2),部门c(20))
但是我的表记录中cwb表中相对的纪录信息比较全,但是在dinge表中,除了物料名称字段是全的以外,像物料编码等都有可能存在一个空值
我现在想通过在cwb来补全dinge表中的“计划单价”:即这个计划单价字段中的内容从cwb表中得到。
我想更新dinge表中的“计划单价”的时候,如果所对应的记录中有“材料编码” 字段的话 就用这个材料编码字段的值进行比较取值,如果没有“材料编码”字段的话,就按照 “材料名称”和“规格型号”来确定在cwb中与之关联的记录项然后更新dinge表中的“计划单价”字段的值
请问这条更新语句该如何去实现?
我如果这么操作的话 我是对临时表进行操作好呢(先把数据都进行操作完毕后,再通过临时表导入到所需生成的表) 还是对最后需要生成的表进行操作(临时表生成后先导入到所需表中然后对该表进行操作)

...全文
93 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2009-10-10
  • 打赏
  • 举报
回复
*--VFP9.0以下

Use 表cwb
Scan
Update 表dinge Set 表dinge.计划单价=表cwb.计划单价,表dinge.计划金额=表cwb.计划单价*表dinge.数量 Where (!Empty(表dinge.材料编码) And Alltrim(表dinge.材料编码)=Alltrim(表cwb.材料编码)) Or (Empty(表dinge.材料编码) And Alltrim(表dinge.材料名称)=Alltrim(表cwb.材料名称) And Alltrim(表dinge.规格型号)=Alltrim(表cwb.规格型号))
Endscan
十豆三 2009-10-10
  • 打赏
  • 举报
回复
*--VFP9.0

Update 表dinge Set 表dinge.计划单价=表cwb.计划单价,表dinge.计划金额=表cwb.计划单价*表dinge.数量 From 表cwb Where (!Empty(表dinge.材料编码) And Alltrim(表dinge.材料编码)=Alltrim(表cwb.材料编码)) Or (Empty(表dinge.材料编码) And Alltrim(表dinge.材料名称)=Alltrim(表cwb.材料名称) And Alltrim(表dinge.规格型号)=Alltrim(表cwb.规格型号))
WWWWA 2009-10-10
  • 打赏
  • 举报
回复
SELECT *,B.计划单价 as newdj,A.计划单价*A.数量 as newje FROM r:\temp\dinge A INNER JOIN r:\temp\cwb B ON;
IIF(NVL(a.材料编码,'AAA')='AAA' OR EMPTY(a.材料编码),ALLTRIM(A.材料名称)=ALLTRIM(B.材料名称) AND ALLTRIM(A.规格型号)=ALLTRIM(B.规格型号),A.材料编码=B.材料编码) into curs dd

已经得到结果(newdj newje),只不过没有替换

WWWWA 2009-10-10
  • 打赏
  • 举报
回复
9以下要麻烦一些,用循环替换
wwwwb 2009-10-10
  • 打赏
  • 举报
回复
VFP9:
UPDATE A SET A.计划单价=B.计划单价,A.计划金额=A.计划单价*A.数量 FROM r:\temp\dinge A INNER JOIN r:\temp\cwb B ON;
IIF(NVL(a.材料编码,'AAA')='AAA' OR EMPTY(a.材料编码),ALLTRIM(A.材料名称)=ALLTRIM(B.材料名称) AND ALLTRIM(A.规格型号)=ALLTRIM(B.规格型号),A.材料编码=B.材料编码)


测试通过
WWWWA 2009-10-10
  • 打赏
  • 举报
回复
表dingeR 计划单价、 计划金额可以由查询来生成,冗余字段
dywfada 2009-10-09
  • 打赏
  • 举报
回复
睇帮助最实际,这么简单的问题。上网搜索vfp9hele.
ACMAIN_CHM 2009-10-09
  • 打赏
  • 举报
回复
update dinge inner join cwb on dinge.材料名称=cwb.材料名称 and dinge.规格型号=cwb.规格型号
set dinge.计划单价=cwb.计划单价,dinge.计划金额=dinge.数量*cwb.计划单价
cyxin2121921 2009-10-09
  • 打赏
  • 举报
回复
表cwb
材料编码 材料名称 规格型号 计量单位 数量 计划单价 计划金额 部门
000001 5号螺丝 5号 个 10 0.5 5 钢结构
000002 6号螺丝 6号 个 5 0.8 4 木配件
000003 铁板 8mm厚 kg 200 2.5 500 钢结构
表dinge
5号螺丝 5号 个 10 钢结构
6号螺丝 6号 个 5 木配件
000003 铁板 8mm厚 kg 200 钢结构

上面是对表打个比方
如题目 填充计划单价 以及 计划金额的值
如果要对dinge表进行填充的话
对于前两条记录的话 就需要比较 物料名称和规格型号两个字段的内容
而对于第三个记录而言 就可以比较材料编码字段中的内容 找到计划单价
然后利用公式 计划金额=数量*计划单价
WWWWA 2009-10-09
  • 打赏
  • 举报
回复
OR
UPDATE A SET A.F1=B.F1 FROM A INNER JOIN B ON A.ID=B.ID
wwwwb 2009-10-09
  • 打赏
  • 举报
回复
还不如直接贴记录及要求结果出来看看

VFP9:
UPDATE A FROM B SET A.F1=B.F1 WHERE A.ID=B.ID

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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