问个初级的数据更新问题:用delphi5.0+paradox+BDE编制了一个软件,用table1的数据刷新table2的数据,sql该如何写?(100分)

  • 主题发起人 主题发起人 libaoliang
  • 开始时间 开始时间
L

libaoliang

Unregistered / Unconfirmed
GUEST, unregistred user!
问个初级的数据更新问题:用delphi5.0+paradox+BDE编制了一个软件,
我想用table1的数据刷新table2的数据,其中table1和table2有相同的字段名,
table1是字典库,没有重名记录,
table2是数据输入库,有很多重名的记录,现在我想把table2中的字段值每隔一段时间
用table1中的数据更新一次,以保证table2中的数据与table1中的保持一致,
请问sql该如何写?
update table1 set a.字段1=b.字段1,a.字段2=b.字段2,... from table1 a,table2,b where a.字段3=b.字段3;
是不行的,
具体该怎样写呢?
请高手们指点一下!


 
用batchmove吧
 
不是移动数据,
其中table2中的字段比table1中的字段多,
用数据转移组件是不合适的!
最好用sql 解决!
 
应当可以用batchMove
只要在mapping中设置一下表之间的对印关系,然后将Mode改为batUpdate即可
 
insert into tabl1(field1,..)select field1,..from tab2
where (field1,field2,field3...) not in (select field1... from table1)
 
因为Paradox没有触发器,所以最好在软件修改每个table1的纪录时,同时软件更新
table2中的所有对应纪录,而不要累计到最后一起修改,这样也不符合数据库的设计
规则,这样对于每个table纪录的修改,就可以用你的那个SQL了
update table1 set a.字段1=b.字段1,a.字段2=b.字段2,... from table1 a,table2,b
where a.字段3=原来的纪录值;
 
update table1 a set a.字段1=(select b.字段1 from table2 where ?? ),
set ...


 
以上大家说的都不对,
请再想想办法!
 
你是考官呀?!怎么不对了!!
蠢猪
 
ss2000:
我在本论坛上从不骂人,要骂人不需要到这里来,
但今天我想问ss2000: 你他妈的是什么东西?我的问题根本不是
问你的,你算什么东西,跑到我的问题来撒野,滚一边去!
对与不对,我是经过程序测试才说的,我们到这里的目的都是学习和交流,
没想到跑出你这个东西,
问题不能回答,








 
果然是蠢猪,哈哈
 
别弄的这么紧张,大家提供的都是一种思路,不管对错,有一定的参考价值。
是不是所有的回答错误的都骂,那没人回答了
 
不太明白你的意思!!
table1 中的记录少过table2 中的记录,如何更新??用table2中的哪些记录去更新table1
中的记录??
 
我说过,我很尊重大富翁的这种氛围,
但有人就是这样,先出来骂人,
以上各位的建议我都很尊重,经过试验无法执行才说不对的,
不信各位可以试一试,看是否可以执行,
如果可以而我水平低下,
怎么都可以,
to dx_zhang1978:
我的确是说错了,
是用table2中的记录替换table1中的部分字段,
update table2 a set a.字段1=b.字段1,a.字段2=b.字段2,... from table1 b,table2,a where a.字段3=b.字段3;
我本来想结贴的,因为出现了我也不想出现的口角,
但我的问题还是未解决啊!
我想问大家的其实本质就是根据一个表中的一个记录去更新另一个表中多个记录
的 update 语句的sql 的写法,








 
看来你不服气。
首先,你这种用一个表的多个字段更新另一个表的多个字段
在数据库的设计中是属于不规范设计,只是在某些特需情况
下用,称之为冗余设计
第二,既然这种设计是不规范的的设计,当然就没有对应的
SQL语句。
第三,有时候确实存在用一个表的一个字段更新另一个表的
一个字段的情况,就是两个表关键字关联的情况,这种更新
必须是单个记录的更新,在ACESS中的数据库设计中有个关
联更新的选相,数据库可以自动更新,编程不用做任何事情,
SQL SERVER 2000也加入这个功能了,SQL SERVER 7.0没有
这个功能,只能做触发器。但这种情况和你需要的也不是一
回事。
所以,你的那种情况只能遍历table2,更新table1,不可能
用一个SQL达到你的目的。
如果你还是理解,那就说明你的水平低下,就怎么都可以了,
哈哈,那你就还是。。了
 
ss2000:
的确如你所说,我已经用一个对应的方法解决了,实现的方法和你所说一样,
可见你的水平很高,
同时我向你道歉,实际上,在我按‘发出’按钮以后就已经后悔了,
我的确是言重了,希望以后不要再发生类似问题,
感谢各位!




 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部