【发布时间】:2015-01-18 20:22:54
【问题描述】:
我有这张桌子
Main_Table
Date Center Response Indicator IDSurvey
--------------------------------------------------------
11-14 C1 10 LOP 432
11-15 C2 20 IUY 235
11-16 C1 35 LOP 125
11-17 C3 65 OIU 548
11-18 C3 45 OIU 693
11-19 C2 68 RES 236
我需要将这个表与两个互斥的表连接起来
Table_A
----------------------------------
Center Group Indicator
C1 GroupA1 LOP
C2 GroupA2 IUY
C3 GroupA3 OIU
Table_B
--------------------------------
Center Group IDSurvey
C1 GroupB1 236
与 union 的连接将带来我主表的六条记录。没有联合有没有办法做到这一点?
这是查询
select da.Date, da.Center, da.Response, da.Indicator, da.IDSurvey
from Main_Table da
join Table_A ca
on da.Indicator = ca.Indicator and ca.Center=da.Center
union
select da.Date, da.Center, da.Response, da.Indicator, da.IDSurvey
from Main_Table da
join Table_B ca
on ca.Center=da.Center and ca.IDSurvey=da.IDSurvey
【问题讨论】:
-
为什么不想使用
union? -
@Supersnake 原因很多,其中两个:好奇心和寻求最佳解决方案的目标
-
最好的解决方案可能是
union查询。也许使用union all。 -
因为您不使用 Table_A 或 Table_B 中的任何列,显然您仍然希望返回 Main 中的所有记录。那么您认为 Table_A 和 Table_B 应该扮演什么角色呢?为什么不从 Main 中选择所有行?