Foxtable(狐表)用户栏目专家坐堂 → [求助]相同结构的几个表相同列内容集合到一个临时表格中!


  共有3779人关注过本帖树形打印复制链接

主题:[求助]相同结构的几个表相同列内容集合到一个临时表格中!

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/9 15:43:00 [显示全部帖子]

相同结构的,用sql语句合并比较快捷:

 Select XZMC,XJHZX,MXJHZDH, XJHZZW Fro m  表1  Union Sel ect XZMC,XJHZX,MXJHZDH, XJHZZW Fro m  表2  Union Se lect XZMC,XJHZX,MXJHZDH, XJHZZW Fro m  表3

五、UNION 运算符

UNION运算符用于组合两个查询的结果。
例如有一个客户表,一个供应商表,我需要得到所有在中国的客户和供应商的名称和地址。
因为数据位于不同的表中,显然,我们需要用两个查询才能完成任务:

SE LECT 公司名称, 地址 FR OM {客户} WHERE 国家 = '中国' UNION SEL ECT 公司名称, 地址 FR OM {供应商} WHERE 国家 = '中国'

两个查询的字段名称、个数、类型必须完全一致才行。

默认情况下,UNION会自动排除重复的行,然后你可以用ALL关键词来确保返回所有的行,例如:

S ELECT 公司名称, 地址 F ROM {客户} WHERE 国家 = '中国' UNION ALL SEL ECT 公司名称, 地址 F ROM {供应商} WHERE 国家 = '中国'


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/9 17:32:00 [显示全部帖子]

既然结构不同,那么合并规则呢?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/9 20:50:00 [显示全部帖子]

1、这个Slelect语句,不是代码,你要增加查询表:
http://www.foxtable.com/webhelp/topics/2321.htm

2、unio n语句必须结构相同,你的第一个select语句结构和后面就不同,解决办法,假定第一Select有A列,后面两个没有,你可以:
s elect a,b,c,d F rom 表1 U nion S elect "" as a,b,c,d F rom 表2 Un ion S elect "" as a,b,c,d Fr om 表3

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sql.txt








[此贴子已经被作者于2019/10/9 20:50:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/9 21:35:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("XJHHZLSHZB","乡级河湖长临时汇总表")
dtb.AddDef("xzMC",Gettype(String),4,"","乡镇名称")
dtb.AddDef("xjhzXM",Gettype(String),6,"","乡级河长姓名")
dtb.AddDef("xjhzDH",Gettype(String),11,"","乡级河长电话")
dtb.AddDef("xjhzZW",Gettype(String),20,"","乡级河长职称")
dtb.Build()
For each dr1 As dataRow in DataTables("表1").DataRows
     Dim dr2 As dataRow in DataTables("XJHHZLSHZB").AddNew()
     dr2("xzMC") = dr1("xzMC")
     dr2("xjhzXM") = dr1("xjhzXM")
     dr2("xjhzDH") = dr1("xjhzDH")
     dr2("xjhzZW") = dr1("xjhzZW")
Next
For each dr1 As dataRow in DataTables("表2").DataRows
     Dim dr2 As dataRow in DataTables("XJHHZLSHZB").AddNew()
     dr2("xjhzXM") = dr1("xjhzXM")
     dr2("xjhzDH") = dr1("xjhzDH")
     dr2("xjhzZW") = dr1("xjhzZW")
Next

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/9 22:22:00 [显示全部帖子]

Dim dtb As New DataTableBuilder("XJHHZLSHZB","乡级河湖长临时汇总表")
dtb.AddDef("xzMC",Gettype(String),4,"","乡镇名称")
dtb.AddDef("xjhzXM",Gettype(String),6,"","乡级河长姓名")
dtb.AddDef("xjhzDH",Gettype(String),11,"","乡级河长电话")
dtb.AddDef("xjhzZW",Gettype(String),20,"","乡级河长职称")
dtb.Build()
Dim xms As New List(of String)
For Each dr1 As DataRow In DataTables("表1").DataRows
    If xms.Contains(dr1("xjhzXM")) = False Then
        xms .Add(dr1("xjhzXM"))
        Dim dr2 As DataRow = DataTables("XJHHZLSHZB").AddNew()
        dr2("xzMC") = dr1("xzMC")
        dr2("xjhzXM") = dr1("xjhzXM")
        dr2("xjhzDH") = dr1("xjhzDH")
        dr2("xjhzZW") = dr1("xjhzZW")
    End If
Next
xms.Clear
....

 回到顶部