主题:3个自由表,如何相加为一个新表?和反过程。
琅拿度
[专家分:2820] 发布于 2007-09-28 17:32:00
有三个表A、B、C,结构都一样(编号C,描述C,数量N)
要求把合并为结构一样的 D,编号不能重复,描述不变,编号重复的数量相加即可。
A 记录为:
1 黑 1
4 白 1
7 红 1
B 记录为:
1 黑 1
3 黄 1
5 紫 1
C 记录为:
2 蓝 1
4 白 1
6 红 1
如果有了D,要减掉A呢?又该如何?
回复列表 (共43个回复)
沙发
琅拿度 [专家分:2820] 发布于 2007-09-28 17:36:00
说实在,本人基本功没打好,编东西老是一堆不精炼的代码?难以见人,东拼西凑也能实现。就是代码麻烦,想请教精练的代码...望各位大虾不吝赐教!谢谢
板凳
海军 [专家分:5350] 发布于 2007-09-29 09:33:00
如果我遇到此事,也是用麻烦的办法.先做一个表d
然后:
use D
appe from A
sele 0
use B
do while eof()
sele D
loca for allt(编号)==allt(B.编号)
if found()
repl 数量 with 数量+B.数量
else
appe blan
repl 数量 with B.数量,编号 with B.编号,描述 with B.描述
endif
sele B
skip
enddo
use c
go top
do while eof()
sele D
loca for allt(编号)==allt(C.编号)
if found()
repl 数量 with 数量+C.数量
else
appe blan
repl 数量 with C.数量,编号 with C.编号,描述 with C.描述
endif
sele C
skip
enddo
3 楼
user886633 [专家分:2400] 发布于 2007-09-29 12:20:00
相加求D比较简单
USE A
COPY STRUCTURE TO temp
USE temp
APPEND FROM A
APPEND FROM B
APPEND FROM C
SET ENGINEBEHAVIOR 70
SELECT 编号,描述,count(数量) as 数量 FROM temp GROUP BY 编号 INTO TABLE D
4 楼
cbl518 [专家分:57140] 发布于 2007-09-29 16:42:00
谁能一条查询命令搞定!!!
[img]http://p15.freep.cn/p.aspx?u=v20_p15_p_0709291640483372_0.jpg[/img]
5 楼
martine [专家分:4950] 发布于 2007-09-29 16:46:00
一条命令恐怕不行吧, 建库或拷贝都需要命令啊
6 楼
cbl518 [专家分:57140] 发布于 2007-09-29 17:06:00
不需建库或拷贝,只需要一条查询命令生成新表。
7 楼
琅拿度 [专家分:2820] 发布于 2007-09-29 17:59:00
最近公司太忙了,都没空上来...
等大侠出招了!
8 楼
琅拿度 [专家分:2820] 发布于 2007-09-29 18:02:00
[quote]不需建库或拷贝,只需要一条查询命令生成新表。[/quote]
查询命令就是我最弱的项了,真头痛...
9 楼
北京种子乐 [专家分:3710] 发布于 2007-09-29 20:15:00
本人到是能用3个语句完成,cbl518老师提出一条命令完成,因而就不敢献丑,只有静观了。
10 楼
cbl518 [专家分:57140] 发布于 2007-09-30 08:32:00
[quote]本人到是能用3个语句完成,cbl518老师提出一条命令完成,因而就不敢献丑,只有静观了。
[/quote]
老兄:
你好!
个人有个人的编程手法和习惯!代码多少,并不是证明什么。关键是编程运行的稳定性和效率。我之所以提出这个问题,是为了提示大家用查询的方法,解决此类历游多表数据的运算问题!尽量每个表运算一次就能达到需要结果目的。大家拿方案,大家学习,大家进步!对吗???
我来回复