以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] select 语句合并  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=141535)

--  作者:sanny
--  发布时间:2019/10/2 22:15:00
--  [求助] select 语句合并

你好,我有两个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")


--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2019/10/4 10:43:00
--  

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


--  作者:狐狸爸爸
--  发布时间:2019/10/4 10:55:00
--  
我看你两个select语句生成的表,结构是一样的啊,如果不一样,想办法做到一样。
--  作者:sanny
--  发布时间:2019/10/4 11:03:00
--  
但是最后的条件不一样的
--  作者:有点酸
--  发布时间:2019/10/4 16:38:00
--  
生成的表结构一样就可以了