foxpro中两表如何合并?
我现在有两种foxpro的表,A表格有199人的姓名,性别等数据,B表格有此199人的联系电话和住址,我现在要把这两个表格合并成C表格,C表格要有199人的姓名,性别,联...
我现在有两种foxpro的表,A表格有199人的姓名,性别等数据,B表格有此199人的联系电话和住址,我现在要把这两个表格合并成C表格,C表格要有199人的姓名,性别,联系电话和住址等数据(就是A表格+B表格内容)
能说明一下该如何做吗? 展开
能说明一下该如何做吗? 展开
6个回答
展开全部
定义:①A表的名称为"A表"、B表的名称为"B表"、C表的名称为"C表";②下面的“对应字段”指A表、B表中都有的、可以建立对应关系(数据类型必须相同,字段名可以相同或不同)的字段;③看下列文字前,性急的朋友请先喝杯咖啡(提提神)、做9次深呼吸(静静心),看完后吃一片西瓜(消消火)、服一片镇静剂(制制怒)。
1 保证每个人在A表和B表中都只有1条准确记录,即如果A表或B表内有数据值完全相同的2条或多条重复记录,只保留其中记录号最小的一条,删除其余重复记录。
2 看看你的两张表属于下列哪种情况,分别处理:
2.1 A表和B表都有至少1个表内各记录的数据值无重复的对应字段,例如:A表、B表都有数据类型相同的"编号"字段,且A表内、B表内都没有相同的编号值:
2.1.1 如果A表的记录数>=B表的记录数,则:
SELECT A表.*,B表.* FROM A表 LEFT JOIN B表 ON A表.编号=B表.编号 INTO DBF C表
注:①A表和B表中的同名字段将在C表中分别变成 字段名+"_a" 字段、字段名+"_b"字段,例如A表的"编号"字段在C表中是"编号_a"、B表的"编号"字段在C表中是"编号_b"【但对原字段名>=9(自由表)或原字段名>=127(数据库表)时略有不同,不赘叙】;为防止这种情况发生,可在执行SELECT - SQL 命令进行连接查询前修改A表或B表的同名字段,;②C表中包含A表的全部内容,但C表中"编号"字段在B表的"编号"字段内无对应值记录的所有来自B表的其它字段的值为NULL;
2.1.2 如果A表的记录数<B表的记录数,则:
SELECT A表.*,B表.* FROM A表 RIGHT JOIN B表 ON A表.编号=B表.编号 INTO DBF C表
注:①同2.1.1的注①;②C表中包含B表的全部内容,但C表中"编号"字段在A表的"编号"字段内无对应值记录的所有来自A表的其它字段的值为NULL;
2.2 A表或B表没有表内各记录的数据值无重复的对应字段,但有2或多个字段类型分别相同、且它们的组合值在A表内、B表内无重复,例如:A表、B表都有"编号"和"姓名"字段,且A表内或B表内的编号值和姓名值都分别有重复,但A表内和B表内没有编号值与姓名值同时重复的记录:
2.2.1 如果A表的记录数>=B表的记录数,则:
SELECT A表.*,B表.* FROM A表 LEFT JOIN B表 ON A表.编号=B表.编号 .AND. A表.姓名=B表.姓名 INTO DBF C表
注:①同2.1.1的注①;②C表中包含A表的全部内容,但C表中"编号"、"姓名"字段的组合值在B表的"编号"、"姓名"字段内无对应组合值记录的所有来自B表的其它字段的值为NULL;
2.2.2 如果A表的记录数<B表的记录数,则:
SELECT A表.性别,B表.* FROM A表 RIGHT JOIN B表 ON A表.编号=B表.编号 .AND. A表.姓名=B表.姓名 INTO DBF C表
注:①同2.1.1的注①;②C表中包含B表的全部内容,但C表中"编号"、"姓名"字段的组合值在A表的"编号"、"姓名"字段内无对应组合值记录的所有来自A表的其它字段的值为NULL;
2.3 上述2.1或2.2的条件都达不到,但A表和B表中记录号相同的记录都分别是同一个人的,例如:第1条记录都是张三的,第2条记录都是李四的,第3条记录都是王五的……,则:
①分别打开A表和B表,给A表和B表都增加1个对应字段,例如"№";
②对A表和B表分别执行:
REPL № WITH RECNO() ALL
③此时已满足2.1的条件,参照2.1操作,只是将语句中的“编号”改成“№”。
2.4 上述2.1或2.2或2.3的条件都达不到,但每个人在A表和B表中都只有1条记录,则:
①依次执行2.3的①、②;
②按照同一个人的“№”字段值相同的原则,手工修改A表或B表中的“№”字段值,例如:将B表中的每条记录的“№”字段的值分别改为A表中对应于同一个人的记录的“№”字段值;
③此时已满足2.1的条件,参照2.1操作,只是将语句中的“编号”改成“№”。
2.5 上述2.1或2.2或2.3或2.4的条件都达不到,则:别干了,睡觉去吧。
1 保证每个人在A表和B表中都只有1条准确记录,即如果A表或B表内有数据值完全相同的2条或多条重复记录,只保留其中记录号最小的一条,删除其余重复记录。
2 看看你的两张表属于下列哪种情况,分别处理:
2.1 A表和B表都有至少1个表内各记录的数据值无重复的对应字段,例如:A表、B表都有数据类型相同的"编号"字段,且A表内、B表内都没有相同的编号值:
2.1.1 如果A表的记录数>=B表的记录数,则:
SELECT A表.*,B表.* FROM A表 LEFT JOIN B表 ON A表.编号=B表.编号 INTO DBF C表
注:①A表和B表中的同名字段将在C表中分别变成 字段名+"_a" 字段、字段名+"_b"字段,例如A表的"编号"字段在C表中是"编号_a"、B表的"编号"字段在C表中是"编号_b"【但对原字段名>=9(自由表)或原字段名>=127(数据库表)时略有不同,不赘叙】;为防止这种情况发生,可在执行SELECT - SQL 命令进行连接查询前修改A表或B表的同名字段,;②C表中包含A表的全部内容,但C表中"编号"字段在B表的"编号"字段内无对应值记录的所有来自B表的其它字段的值为NULL;
2.1.2 如果A表的记录数<B表的记录数,则:
SELECT A表.*,B表.* FROM A表 RIGHT JOIN B表 ON A表.编号=B表.编号 INTO DBF C表
注:①同2.1.1的注①;②C表中包含B表的全部内容,但C表中"编号"字段在A表的"编号"字段内无对应值记录的所有来自A表的其它字段的值为NULL;
2.2 A表或B表没有表内各记录的数据值无重复的对应字段,但有2或多个字段类型分别相同、且它们的组合值在A表内、B表内无重复,例如:A表、B表都有"编号"和"姓名"字段,且A表内或B表内的编号值和姓名值都分别有重复,但A表内和B表内没有编号值与姓名值同时重复的记录:
2.2.1 如果A表的记录数>=B表的记录数,则:
SELECT A表.*,B表.* FROM A表 LEFT JOIN B表 ON A表.编号=B表.编号 .AND. A表.姓名=B表.姓名 INTO DBF C表
注:①同2.1.1的注①;②C表中包含A表的全部内容,但C表中"编号"、"姓名"字段的组合值在B表的"编号"、"姓名"字段内无对应组合值记录的所有来自B表的其它字段的值为NULL;
2.2.2 如果A表的记录数<B表的记录数,则:
SELECT A表.性别,B表.* FROM A表 RIGHT JOIN B表 ON A表.编号=B表.编号 .AND. A表.姓名=B表.姓名 INTO DBF C表
注:①同2.1.1的注①;②C表中包含B表的全部内容,但C表中"编号"、"姓名"字段的组合值在A表的"编号"、"姓名"字段内无对应组合值记录的所有来自A表的其它字段的值为NULL;
2.3 上述2.1或2.2的条件都达不到,但A表和B表中记录号相同的记录都分别是同一个人的,例如:第1条记录都是张三的,第2条记录都是李四的,第3条记录都是王五的……,则:
①分别打开A表和B表,给A表和B表都增加1个对应字段,例如"№";
②对A表和B表分别执行:
REPL № WITH RECNO() ALL
③此时已满足2.1的条件,参照2.1操作,只是将语句中的“编号”改成“№”。
2.4 上述2.1或2.2或2.3的条件都达不到,但每个人在A表和B表中都只有1条记录,则:
①依次执行2.3的①、②;
②按照同一个人的“№”字段值相同的原则,手工修改A表或B表中的“№”字段值,例如:将B表中的每条记录的“№”字段的值分别改为A表中对应于同一个人的记录的“№”字段值;
③此时已满足2.1的条件,参照2.1操作,只是将语句中的“编号”改成“№”。
2.5 上述2.1或2.2或2.3或2.4的条件都达不到,则:别干了,睡觉去吧。
展开全部
首先两个表必须有相同的字段,以供联接用,如果没有相同字段,只有导出为excel格式的表,在excel中复制粘贴。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,两张表之间要做关联,表之间必须要有关键字段,如果两张表有身份证号,可以用身份证号进行关联,下面语句就是通过身份证号进行关联并将结果保存成C表:
sele a.*,b.* from a表,b表 where a.身份证号=b.身份证号 into dbf c表
sele a.*,b.* from a表,b表 where a.身份证号=b.身份证号 into dbf c表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打开两表
sele a.姓名,a.性别,b.联系电话,b.地址 from a,b where a.编号=b.编号
copy to new
以上两条命令就可以完成
前提是编号字段必须的唯一,如果没有编号字段,请找一个是只有统一数据的字段,如果姓名没有重复的也可以用姓名字段
sele a.姓名,a.性别,b.联系电话,b.地址 from a,b where a.编号=b.编号
copy to new
以上两条命令就可以完成
前提是编号字段必须的唯一,如果没有编号字段,请找一个是只有统一数据的字段,如果姓名没有重复的也可以用姓名字段
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sele a.*,b.* from a表,b表 where a.身份证号=b.身份证号 into dbf c表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询