使用UNION查询连接三个表

时间:2012-11-30 17:47:35

标签: sql ms-access join union

我要做的是从三个不同的表中提取唯一的数据集,并使用UNION查询将它们一起显示。它们都有一个共同的字段,因此它们应该通过该字段链接。当我尝试运行“无法执行查询。无效的操作或使用多值字段的语法”的查询时,我收到错误。我知道哪个字段导致问题,这是“业务线”字段。我该如何解决这个问题,以便查询能够处理它?它甚至可能吗?

这是我正在使用的SQL语句:

SELECT [Financial Bureau Reports].[Date Year], [Financial Bureau Reports].[Section Chief].[Financial Bureau Reports].[Outcome], [Financial Bureau Reports].[Type of Review]
FROM [Financial Bureau Reports]
WHERE (([Financial Bureau Reports].[CoCode (NAIC)]=[Forms]![Home Screen]![txtCoCode]))

UNION ALL

SELECT [Market Analysis Review].[Data Year], [Market Analysis Review].[Review Level], [Market Analysis Review].[Line of Business].[value], [Market Analysis Review].[Recommendation], [Market Analysis Review].[Analyst], [Market Analysis Review].[Action]
FROM [Market Analysis Review]
WHERE(([Market Analysis Review].[CoCode (NAIC)]=[Financial Bureau Reports].[CoCode(NAIC)]))

UNION ALL 

SELECT [MarketConductExams].[State], [MarketConductExams].[Report Date]
FROM [MarketConductExams]
WHERE [MarketConductExams].[CoCode (NAIC)]=[Market Analysis Review].[CoCode (NAIC)];

很抱歉缺少格式化,显然SQL不能很好地转移。

另外,我在Microsoft Access 2010中使用SQL。

如果问题太模糊或需要澄清,请告诉我。谢谢!

4 个答案:

答案 0 :(得分:3)

您无法将select中列数不同的查询合并在一起。这些似乎甚至不是应该联合在一起的相关查询。我认为您需要向您的应用程序发送三个单独的查询。

答案 1 :(得分:1)

我通常在工会周围有一个外部SELECT,但其他的是正确的,你需要为这些字段提供相同数量的字段和相同的名称。

使用AS同步字段名称。 如果你有一些不在其他查询中的字段,那么你可以制造它们:null作为SomeOutputField或''作为SomeOutputField。

答案 2 :(得分:0)

我不知道为什么你特别得到那条消息,但是UNION语句要求每个SELECT语句具有相同的列数并且它们具有相同的数据类型。对于您发布的SQL语句,情况并非如此。

答案 3 :(得分:0)

我认为你需要把你的桌子互相加入,而不是联合起来 - 就像这样:

SELECT [Financial Bureau Reports].[Date Year], 
       [Financial Bureau Reports].[Section Chief].[Financial Bureau Reports].[Outcome], 
       [Financial Bureau Reports].[Type of Review],
       [Market Analysis Review].[Data Year], 
       [Market Analysis Review].[Review Level], 
       [Market Analysis Review].[Line of Business].[value], 
       [Market Analysis Review].[Recommendation], 
       [Market Analysis Review].[Analyst], 
       [Market Analysis Review].[Action],
       [MarketConductExams].[State], 
       [MarketConductExams].[Report Date]
FROM [Financial Bureau Reports]
(JOIN [Market Analysis Review]
   ON [Market Analysis Review].[CoCode (NAIC)]=[Financial Bureau Reports].[CoCode(NAIC)]
 (JOIN [MarketConductExams]
    ON [MarketConductExams].[CoCode (NAIC)]=[Market Analysis Review].[CoCode (NAIC)]))
WHERE [Financial Bureau Reports].[CoCode (NAIC)]=[Forms]![Home Screen]![txtCoCode];