Foxtable(狐表)用户栏目专家坐堂 → [求助] select 语句合并


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

主题:[求助] select 语句合并

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
[求助] select 语句合并  发帖心情 Post By:2019/10/2 22:15:00 [只看该作者]

你好,我有两个Se/lect语句,要把结果存于一个表中,该如何编写,如下合在一起出错了,谢谢。

 

Dim q  As new QueryBuilder
 q.TableName = "MPSDiff1"
q.Sel/ectString = "Se/lect {Orderlist}.OrderDate,{Orderlist}.批号,{Orderlist}.EndCustomer,{Orderlist}.CustomerPO,{Orderlist}.Pos,{Orderlist}.Part,{Orderlist}.PartNo,{Orderlist}.OrderQty,{Orderlist}.ETD,{myPlanningBackup}.OrderDate,{myPlanningBackup}.EndCustomer,{myPlanningBackup}.CustomerPO,{myPlanningBackup}.Pos,{myPlanningBackup}.Part,{myPlanningBackup}.PartNo,{myPlanningBackup}.OrderQty,{myPlanningBackup}.ETD From {Orderlist} Inner JOIN {myPlanningBackup} ON {myPlanningBackup}.[批号] = {Orderlist}.[批号] Where {Orderlist}.ETD <> {myPlanningBackup}.ETD" And q.Se/lectString = "Sel/ect {Orderlist}.OrderDate,{Orderlist}.批号,{Orderlist}.EndCustomer,{Orderlist}.CustomerPO,{Orderlist}.Pos,{Orderlist}.Part,{Orderlist}.PartNo,{Orderlist}.OrderQty,{Orderlist}.ETD,{myPlanningBackup}.OrderDate,{myPlanningBackup}.EndCustomer,{myPlanningBackup}.CustomerPO,{myPlanningBackup}.Pos,{myPlanningBackup}.Part,{myPlanningBackup}.PartNo,{myPlanningBackup}.OrderQty,{myPlanningBackup}.ETD,{myPlanningBackup}.批号 From {Orderlist} Left JOIN {myPlanningBackup} ON {myPlanningBackup}.[批号] = {Orderlist}.[批号] Where {myPlanningBackup}.批号 Is null"


q.Build
 MainTable = Tables("MPSDiff1")


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/4 9:05:00 [只看该作者]

如果表结构一样,可以用Union合并:

五、UNION 运算符

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

SE LECT 公司名称, 地址 FROM {客户} WHERE 国家 = '中国' UNION S ELECT 公司名称, 地址 FROM {供应商} WHERE 国家 = '中国'

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

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

SE LECT 公司名称, 地址 FROM {客户} WHERE 国家 = '中国' UNION ALL SE LECT 公司名称, 地址 FROM {供应商} WHERE 国家 = '中国'


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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/10/4 10:43:00 [只看该作者]

谢谢回复。但是 我前面的se lect 和后面的 se lect 字段内容不一样的,不可以用union, 还有其它办法吗?


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2019/10/4 10:55:00 [只看该作者]

我看你两个select语句生成的表,结构是一样的啊,如果不一样,想办法做到一样。

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


加好友 发短信
等级:三尾狐 帖子:795 积分:5880 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2019/10/4 11:03:00 [只看该作者]

但是最后的条件不一样的

 回到顶部
帅哥哟,离线,有人找我吗?
有点酸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2019/10/4 16:38:00 [只看该作者]

生成的表结构一样就可以了

 回到顶部