主题:两个表的组合问题
笨兔
[专家分:300] 发布于 2009-12-05 21:54:00
我有表A1与A2,A1字段:帐号,欠款;A2字段:帐号,余额。
A1中有10个记录,A2中有5个记录,怎样把A2中的5个记录中的余额按照相同帐号添加到A1中?
回复列表 (共10个回复)
沙发
cagd [专家分:410] 发布于 2009-12-05 23:14:00
set safety off
close all
select a.*,b.余额 from A1.dbf a left join A2.dbf b ;
on allt(a.帐号)==allt(b.帐号) into table A3.dbf
close all
use A3.dbf
copy to A1.dbf
close all
erase A3.dbf
板凳
sywzs [专家分:5650] 发布于 2009-12-06 06:07:00
select A1.*,A2.余额 from A1 left join A2 on A2.帐号=A1.帐号
use in A1
copy to A1
3 楼
笨兔 [专家分:300] 发布于 2009-12-06 09:44:00
谢谢两位老师!
A1表到加上字段“余额”,但“余额”都是空值。A2表的余额有数值呀?
4 楼
cbl518 [专家分:57140] 发布于 2009-12-06 09:59:00
怎样把A2中的5个记录中的余额按照相同帐号添加到A1中?
是更行 A1 字段?
还是
在 A1 中添加新纪录啊?
5 楼
cbl518 [专家分:57140] 发布于 2009-12-06 10:06:00
更新记录用
UPDATE a1 SET a1.字段名= a2.字段表达式 FROM a2 WHERE 条件=.T.
添加新纪录用
INSERT INTO a1 [(字段名1 [, 字段名2, ...])]
SELECT 查询语句 ...
6 楼
笨兔 [专家分:300] 发布于 2009-12-06 19:01:00
SELECT tbluser.yhzh as 用户帐号 ,tbluser.yhmc as 用户名称,ssn as 所属年,csds as 初始读数,sbzs as 水表止数,ysl as 用水量,SUM(yjsf) as 欠费总额 FROM tbluser,tblsblr WHERE jfyz=.f. AND ;
UPPER(tbluser.yhzh)=UPPER(tblsblr.yhzh) AND ;
ALLTRIM(tbluser.ysxz)==ALLTRIM(thisform.combo1.value ) AND ;
SUBSTR(tblsblr.id,2,4)=ALLTRIM(STR(thisform.spinner1.Value )) AND ALLTRIM(tblsblr.ssy)=ALLTRIM(thisform.text8.Value) ;
GROUP BY tbluser.yhzh,yhmc,ssn,csds,sbzs,ysl INTO CURSOR curqfzb
我的想法是在临时表curqfzb中加一个余额字段,并在想同帐号记录后面余额添上数据。
SELECT curqfzb.* ,tbluserye.ye FROM curqfzb LEFT OUTER JOIN tbluserye ON tbluserye.yhzh=curqfzb.用户帐号
这样写余额字段添上了,但数据没有添上。
7 楼
cbl518 [专家分:57140] 发布于 2009-12-06 19:53:00
SELECT curqfzb.* ,00000.00+tbluserye.ye 余额 FROM curqfzb LEFT OUTER JOIN tbluserye ON tbluserye.yhzh=curqfzb.用户帐号
这样写余额字段添上了,但数据没有添上。
8 楼
cbl518 [专家分:57140] 发布于 2009-12-06 19:55:00
SELECT A.* ,00000.00+B.ye 余额 FROM curqfzb A LEFT OUTER JOIN tbluserye B ON B.yhzh=A.用户帐号
9 楼
笨兔 [专家分:300] 发布于 2009-12-06 20:39:00
再一次谢谢CBL518大师!
用你的代码生成表是:
用户帐号 用户名称 年 读数 止数 用水量 欠总额 余额
JM01 赵一 2009 1 10 9 18.00 .NULL
JM02 赵二 2009 0 5 5 10.00 .NULL
JM03 赵三 2009 0 8 8 16.00 .NULL
余额还是空,tbluserye表是:
用户帐号 余额
JM01 10.00
JM03 5.00
我的意思是在JM01余额中添入10,在JM03余额中添入5,JM02的余额就是0.
10 楼
笨兔 [专家分:300] 发布于 2009-12-06 20:51:00
可以了
SELECT A.* ,00000.00+B.ye 余额 FROM curqfzb A LEFT OUTER JOIN tbluserye B ON allt(B.yhzh)=allt(A.用户帐号 )
我来回复