Sql 使用联合查询连接三个表

Sql 使用联合查询连接三个表,sql,ms-access,join,union,Sql,Ms Access,Join,Union,我试图做的是从三个不同的表中提取唯一的数据集,并使用联合查询将它们显示在一起。它们有一个共同的字段,所以应该通过该字段链接。当我试图运行表示“无法执行查询”的查询时,我遇到了一个错误。使用多值字段的操作或语法无效。我知道是哪个领域导致了问题,这是业务线领域。我将如何修复此问题,以便查询能够处理它?有可能吗 下面是我正在使用的SQL语句: SELECT [Financial Bureau Reports].[Date Year], [Financial Bureau Reports].[Secti

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

下面是我正在使用的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不能很好地传输

另外,我在MicrosoftAccess2010中使用SQL


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

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

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

我不知道您为什么会收到这样的消息,但是UNION语句要求每个SELECT语句具有相同的列数,并且它们具有相同的数据类型。您发布的SQL语句并非如此。

我不知道您为什么会收到这样的消息,但UNION语句要求每个SELECT语句具有相同的列数,并且它们的数据类型相同。您发布的SQL语句并非如此。

我通常在联合周围有一个外部选择,但其他人是对的,您需要有相同数量的字段和这些字段的相同名称

使用AS同步字段名。
如果您有一些字段不在其他查询中,那么您可以将它们生成为空:作为SomeOutputField或作为SomeOutputField。

我通常在联合周围有一个外部选择,但其他字段是正确的,您需要为这些字段提供相同数量的字段和相同的名称

使用AS同步字段名。
如果您有一些字段不在其他查询中,那么您可以将它们生成为空:作为SomeOutputField或作为SomeOutputField。

我认为您需要将表彼此连接起来,而不是将它们合并在一起-就像这样:

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];

我认为您需要将表彼此连接起来,而不是将它们合并在一起—就像这样:

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];

至少,您可以高亮显示代码块和ctl-k,或者单击{}按钮以格式化为代码块。至少,您可以高亮显示代码块和ctl-k,或者单击{}按钮以格式化为代码块。这很有意义。我试过了,我得到一个错误,告诉我FROM字段中有语法问题…有什么想法吗?你能包括实际的错误消息吗?FROM是子句的开头,而不是字段名;如果错误消息引用的是“发件人字段”,则检查代码在[MarketConductTests].[Report Date]之后是否有逗号。您也可以尝试删除。。。从第一个ON和WHERE条件开始,或者在第二个ON条件附近添加它们。最初,我收到一条消息,在from子句中表示语法错误。现在,在[MarketConductTests].[Report Date]之后添加逗号后,我得到一个错误,即SELECT语句包含拼写错误或缺少的保留字或参数名称,或者标点符号不正确。我也检查并调整了括号。@GregSpev:你误解了我之前的评论-[MarketConductTests]。[Report Date]后面不应该有逗号。我试图在没有实际错误信息的情况下提供可能的解决方案,这始终是一个坏主意。我在别处读到Access中的联接表应该用括号括起来,并相应地修改了我的查询-你能试试更新后的查询吗?啊,明白了。我的错误。好的,我尝试了您建议的查询,但仍然在FROM子句中得到语法错误。它发生在包含JOIN子句的括号中,但仍然是一个错误。这是有意义的。我试过了,我得到一个错误,告诉我FROM字段中有语法问题…有什么想法吗?你能包括实际的错误消息吗?FROM是子句的开头,而不是字段名;如果错误消息引用的是“发件人字段”,则检查代码在[MarketConductTests].[Report Date]之后是否有逗号。您也可以尝试删除。。。从第一个ON和WHERE条件开始,或者在第二个ON条件附近添加它们。最初,我收到一条消息,在from子句中表示语法错误。现在,在[MarketConductTests].[Report Date]之后添加逗号后,我得到一个错误,即SELECT语句包含一个保留字
或者参数名称拼写错误或丢失,或者标点不正确。我也检查并调整了括号。@GregSpev:你误解了我之前的评论-[MarketConductTests]。[Report Date]后面不应该有逗号。我试图在没有实际错误信息的情况下提供可能的解决方案,这始终是一个坏主意。我在别处读到Access中的联接表应该用括号括起来,并相应地修改了我的查询-你能试试更新后的查询吗?啊,明白了。我的错误。好的,我尝试了您建议的查询,但仍然在FROM子句中得到语法错误。它发生在包含JOIN子句的括号中,但仍然是一个错误。