| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 527 人关注过本帖
标题:我也问问UPDATE的问题,多表更新
只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
已结贴  问题点数:10 回复次数:8 
我也问问UPDATE的问题,多表更新
select sum(金额) AS 汇总 FROM A2 GROUP BU 编号 INTO TABLE HZ
select sum(金额) AS 汇总 FROM WHERE 日期<>当前日期 A2 GROUP BU 编号 INTO TABLE QK

SELECT A1
DO WHILE !EOF()

UPDATE A1 SET A1.汇总=HZ.汇总 WHERE A1.编号=HZ.编号
UPDATE A1 SET A1.欠款=QK.欠款 WHERE A1.编号=QK.编号

SKIP
ENDDO

我是想把A2表进行2次汇总,
第1次是汇总所有编号的,也就是所用记录,
第2次是汇总,是排除当前日期的,也就是以前欠款的汇总,
然后更新到A1去。
用上面的来更新,问题来了。
A1的汇总字段,只更新了1条记录,但欠款字段,却是都更新了。。

不知道为什么。
后来,我把2个UPDATE合起来。

UPDATE A1 SET A1.汇总=HZ.汇总,A1.欠款=QK.欠款  WHERE A1.编号=HZ.编号 AND A1.编号=QK.编号
问题也是,A1只有1个记录更新了汇总,欠款,也是全部更新了。。。


不知道是什么问题。
但如果我单独只做
UPDATE A1 SET A1.汇总=HZ.汇总 WHERE A1.编号=HZ.编号
是可以全部更新的。
后来我就想,为什么不把2个汇总合在一起呢?
但我,不会,
目前,是先分开汇总 ,然后我在把2个合起来

SELECT HZ.汇总,QK.欠款,A1.编号 FROM HZ,QK,A1 WHERE A1.编号=HZ.编号 AND A1.编号=QK.编号  ORDER BY 编号 INTO TABLE A3

SELECT A1
DO WHILE !EOF()

UPDATE A1 SET A1.汇总=A3.汇总,A1.欠款=A3.欠款 WHERE A1.编号=A3.编号
SKIP
ENDDO

到现在,我还不清楚,为什么,刚开始的时候,只更新了1条记录。。
搜索更多相关主题的帖子: 记录 
2015-03-25 17:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:2 
先看看VFP帮助文件

坚守VFP最后的阵地
2015-03-25 17:08
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
没装,,,
2015-03-25 17:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:2 
帮助文件是学习VFP的必备工具
vfp6.0帮助文件:https://down.bccn.net/4396.html

坚守VFP最后的阵地
2015-03-25 17:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
哈哈,问题在哪里啊
2015-03-25 19:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:2 
基础知识问题,还是自己看资料学习吧

坚守VFP最后的阵地
2015-03-25 19:48
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:2 
你想一次做?可能比较困难,建议还是分两次做。理由:你的数据源是两个不同的表。看了你的UPDATE...WHERE...AND...那句,感觉你是想达到这种目的:如果前面一个条件满足就更新A1.汇总,后面一个条件满足就更新A1.欠款。不知道我酱紫理解对不对。但是,FoxPro是严格按照你条件执行的,即,只有AND前后两个条件同时满足才会更新。你得出汇总只更新了一条记录,而欠款却全部更新了的结果可能基于此。因为没有数据表,我也只能猜测个大概。
2015-03-26 14:43
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
谢谢。
我以前是分2步的,但不知道那里出了问题。
刚开始,我只是要汇总的,
select sum(金额) AS 汇总 FROM TMP_SDB GROUP BU 编号 INTO TABLE HZ
SELECT TMP_SDB
*GO TOP  &&我没这条,是不是没这个的问题?
DO WHILE !EOF()
UPDATE TMP_SDB SET TMP_SDB.汇总=HZ.汇总 WHERE TMP_SDB.编号=HZ.编号
SKIP
ENDDO
这样是可以更新整个TMP_SDB的。
但后来,我也要单独,汇总欠款,也就是说,不要把当前月份算进去。
我就在做1个汇总,
select sum(金额) AS 汇总 FROM TMP_SDB WHERE 日期 <>TODAY GROUP BU 编号 INTO TABLE QK
然后,我在一起更新。就是把上面的更新,写成下面。
DO WHILE !EOF()
UPDATE TMP_SDB SET TMP_SDB.汇总=HZ.汇总 WHERE TMP_SDB.编号=HZ.编号
UPDATE TMP_SDB SET TMP_SDB.欠款=QK.欠款 WHERE TMP_SDB.编号=QK.编号
SKIP
ENDDO
但我发现,我TMP_SDB的数据,只更新了1个汇总,而欠款,就是全部更新了。

后来,才出现这个,我看看能不能一起更新,好像不行
SELECT HZ.汇总,QK.欠款,A1.编号 FROM HZ,QK,A1 WHERE A1.编号=HZ.编号 AND A1.编号=QK.编号  ORDER BY 编号 INTO TABLE A3

再后来,我才问,
select sum(金额) AS 汇总 FROM TMP_SDB GROUP BU 编号 INTO TABLE HZ
select sum(金额) AS 汇总 FROM TMP_SDB WHERE 日期 <>TODAY GROUP BU 编号 INTO TABLE QK
SELECT HZ.汇总,QK.欠款,TMP_SDB.编号 FROM HZ,QK,A1 WHERE TMP_SDB.编号=HZ.编号 AND TMP_SDB.编号=QK.编号  ORDER BY 编号 INTO TABLE A3
这个3个语句,能不能合成1条,不在这里问的。
2015-03-26 17:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:2 
不知道楼主要解决的问题是什么

坚守VFP最后的阵地
2015-03-26 21:07
快速回复:我也问问UPDATE的问题,多表更新
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017461 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved