| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 518 人关注过本帖
标题:别名在 update 中的应用
只看楼主 加入收藏
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
别名在 update 中的应用
下面这条select语句可以正常使用,可是后面的update语句就不行了,请帮我看看有没有办法解决这个问题。
SELECT * FROM stdcost t1 LEFT JOIN itemcost t2 on t1.pn =t2.pn

需要做的就是把stdcost表更新,更新的内容来源于itemcost,这两张表是一模一样,更新的条件就是pn保持一致就ok.

【正常代码】update stdcost set stdcost.mat =itemcost.mat,stdcost.lab=itemcost.lab,stdcost.burden =itemcost.burden ,stdcost.overhead =itemcost.overhead,stdcost.sub =itemcost.sub ,stdcost.price =stdcost.mat+stdcost.lab+stdcost.overhead +stdcost.sub from itemcost where stdcost.pn =itemcost.pn and stdcost.price =0

因为正常代码太复杂,而且看得很晕,所以希望能简化一些,然后想到了用别名,结果就不行。

【简化代码】UPDATE stdcost t1 SET t1.mat =t2.mat from itemcost t2 on t1.pn =t2.pn


creat dbf         itemcost(;
pn                    c(28),;
des                    c(45),;
type                c(18),;
mat                    n(9,5),;
lab                    n(9,5),;
burden                n(9,5),;
overhead            n(9,5),;
sub                    n(9,5),;
price                n(9,5))



creat dbf         stdcost(;
pn                    c(28),;
des                    c(45),;
type                c(18),;
mat                    n(9,5),;
lab                    n(9,5),;
burden                n(9,5),;
overhead            n(9,5),;
sub                    n(9,5),;
price                n(9,5))
搜索更多相关主题的帖子: update 
2014-04-15 21:43
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:5 
update命令中,只有FROM子句中的表文件名可以有别名,被更新表是不能有别名的。比如,你的stdcost表就不能设置别名。
2014-04-16 08:10
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:10 
原文中的 UPDATE stdcost t1 SET t1.mat =t2.mat from itemcost t2 on t1.pn =t2.pn 应改写为:UPDATE stdcost SET mat =t2.mat from itemcost t2 where stdcost.pn =t2.pn


[ 本帖最后由 liuxingang28 于 2014-4-16 09:05 编辑 ]

泉城飞狐
2014-04-16 08:12
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
以下是引用liuxingang28在2014-4-16 08:12:35的发言:

原文中的 UPDATE stdcost t1 SET t1.mat =t2.mat from itemcost t2 on t1.pn =t2.pn 应改写为:UPDATE stdcost SET mat =t2.mat from itemcost t2 on stdcost.pn =t2.pn



谢谢你的回复,在这个地方就提示mat不唯一,因为这两张表stdcost 和itemcost的格式一模一样。
2014-04-16 08:40
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
以下是引用hyz00001在2014-4-16 08:40:42的发言:
 
谢谢你的回复,在这个地方就提示mat不唯一,因为这两张表stdcost 和itemcost的格式一模一样。
我的代码写错了,应该是:UPDATE stdcost SET mat =t2.mat from itemcost t2 where stdcost.pn =t2.pn


[ 本帖最后由 liuxingang28 于 2014-4-16 09:04 编辑 ]

泉城飞狐
2014-04-16 09:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
认真看VFP帮助文件中UPDATA命令的用法

坚守VFP最后的阵地
2014-04-16 12:30
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
新手来着,很多都没弄明白,在百度上找了好久,都没有人涉及别名的update,所以出来问问看。
2014-04-16 14:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
不知道SQL查詢語句的機制,貿貿然用別名,肯定出錯了。SQL查詢有一個特點,就是哪怕數據庫(表)沒有打開,它在用到的時候會自動打開它們(而且未必會關閉,因爲它不大可能知道哪些是它打開的,哪些是原先就已經打開的),因此它的實現機制很可能不會顧及別名,所以其語法指南都提示那些參數是庫(Database)名或表(Table)名,而不是别名(Alias)。語法上提示用什么,就老老實實用什麽,如果改動嘗試發現不行,就祗能放棄,沒什麽好說的。

授人以渔,不授人以鱼。
2014-04-16 14:17
快速回复:别名在 update 中的应用
数据加载中...
 
   



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

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