VFP怎样表相减操作?SELECT 语句包含吗?

yaoha2003 2004-09-23 05:30:10
谢谢
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaoha2003 2004-09-26
  • 打赏
  • 举报
回复
guo ran ,thanks.
十豆三 2004-09-25
  • 打赏
  • 举报
回复
说明:
你的目的是:如果T1 T2记录关键字相同,则用T2中的记录替换T1中的记录,如果有些记录T2表中有,而T1表中没有,则将这些记录添加到T1表中

我的做法:先把T1的记录添加T2的表记录后。
然后执行:
INDEX ON 关键字1+关键字2+...关键字N TO TEMP2-sy
&&如果有关键字段不是字符型,请注意转换。
TOTAL ON 关键字1+关键字2+...关键字N TO TEMP3 FIELDS 字段1
&&假设字段1为字符型(如果字段1不是字符型,那么找一个字符型字段)

这是按照人你的意思(如果T1 T2记录关键字相同)进行索引,然后汇总,这样汇总后的表就是把T1 T2记录关键字相同的记录只保留了T2中的记录,因为T2中记录排在T1中记录之前(因为我打开T2,append from T1),而且T2中有的记录而T1中没有记录也保留了下来。
yaoha2003 2004-09-24
  • 打赏
  • 举报
回复
谢谢 JohnShen(因果网) :帮我解决DELE问题,第一个问题可用
repl xh with "1" for &condition 解决。

to JohnShen(因果网) :
我有两个表,T1,T2,它们的关键字有的相同,有的不同,

目的:是如果T1 T2记录关键字相同,则用T2中的记录替换T1中的记录,如果有些记录T2表中有,而T1表中没有,则将这些记录添加到T1表中

如果先比较关键字,然后删除T1表中记录,然后再从T2表append回去,这样当记录超过5000条时,在P41.6a的机器上需要10多分钟,10000条就不知道要多久了,因为它需要比较的记录越来越多,每比一条的时间越来越长,近乎死机了。
所以我想先用T1-T2,然后append T2,因为T1 T2表结构是完全一样的,应该可以减,学数据库原理时说可以在SQL中可用except来做,VFP中支持吗?
谢谢啊!

我另外开了一条贴,这个问题另外给分。
JohnShen 2004-09-24
  • 打赏
  • 举报
回复
to dfwxj(清风),你试试
dfwxj 2004-09-24
  • 打赏
  • 举报
回复
JohnShen(因果网),dele for (condition)是对的
dfwxj 2004-09-24
  • 打赏
  • 举报
回复
不懂楼主是何用意,好象用set filt to 就可以达到目的了
yaoha2003 2004-09-24
  • 打赏
  • 举报
回复
to apple_8180(十豆三)
你的只是把T1中的记录加进了T2,但没有删除T2中原有的和T1关键字值相同的记录。我的目的是如果两个表中关键字值相同,则删除T1中的此记录,并加入T2中的记录。


十豆三 2004-09-24
  • 打赏
  • 举报
回复
如果你的表是DBF表,用以下方法:

use t2
copy to temp.dbf
use temp.dbf
append from t1.dbf

INDEX ON 关键字1+关键字2+...关键字N TO TEMP1
&&如果有关键字段不是字符型,请注意转换。
TOTAL ON 关键字1+关键字2+...关键字N TO TEMP2 FIELDS 字段1
&&假设字段1为字符型(如果字段1不是字符型,那么找一个字符型字段)

use t2
zap
append from temp2.dbf
&&看一个T2的内容是不是你要的内容。
十豆三 2004-09-24
  • 打赏
  • 举报
回复
如果你的表是SQL中的表,用以下方法:

SQLEXEC(LJSql,"select * from T2","Tmp2")
SELECT Tmp2
COPY TO temp2
SQLEXEC(LJSql,"select * from T1","Tmp1")
SELECT Tmp1
COPY TO temp1
USE temp2
APPEND FROM temp1
INDEX ON 关键字1+关键字2+...关键字N TO TEMP2-sy
&&如果有关键字段不是字符型,请注意转换。
TOTAL ON 关键字1+关键字2+...关键字N TO TEMP3 FIELDS 字段1
&&假设字段1为字符型(如果字段1不是字符型,那么找一个字符型字段)
USE temp3
BROWSE &&看一下是不是你要的内容,如果是把这些记录写到T2表中吧。

注:LJSql 为LJSql=SQLCONNECT() 连接SQL数据源的连接句柄
JohnShen 2004-09-23
  • 打赏
  • 举报
回复
1、修改这些记录的某些属性并使原来的表中的值也修改,请问该怎么办?
可以先删除原表中选出来的记录,然后再从temp表append回去

2、如果要在原表中删除这些记录有该怎么办?
最后一句错误,
dele for (condition)
改为:
dele for &condition
yaoha2003 2004-09-23
  • 打赏
  • 举报
回复
我有一个表SCHOOL,用SELECT-SQL做查询后选出若干记录放在另外一个表TEMP中,现在想修改这些记录的某些属性并使原来的表中的值也修改,请问该怎么办?如果要在原表中删除这些记录有该怎么办?
我试了这样不行.
condition 我可以在SELECT-SQL查询语句中得到.
condition="xh>1"
dele for (condition)
JohnShen 2004-09-23
  • 打赏
  • 举报
回复
对用sql语句可以实现,将你的要求将详细一点,包括表名,测试数据等,这样才会直接得到你希望的解答。

2,722

社区成员

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

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