0

我需要执行 aUNION ALL或 anOUTER JOIN来链接两个表。我认为我的语法很好,因为我使用了微软网站上的相同格式(http://office.microsoft.com/en-us/access-help/combine-the-results-of-several-select-queries-通过使用-a-union-query-HA010341541.aspx)。但是,我反复收到说明的消息;“FROM 子句中的语法错误”。

SummaryID,.. 都是字段,unitcostdata... 和 Tax 是表格。

我的代码是

SELECT SummaryID, Component, Element, CapitalCost,Subsystem,SourceID
FROM unitcostdata6-4-2013
UNION ALL
SELECT SummaryID, TaxSecond, TaxThird, TaxFourth, SourceID
FROM Tax;

任何帮助表示赞赏

4

3 回答 3

1

语法错误是因为您的表名为unitcostdata6-4-2013. 任何带有特殊字符的表格或列都需要使用方括号进行转义,因此您需要在表格周围使用破折号的方括号:

SELECT SummaryID, Component, Element, CapitalCost,Subsystem,SourceID
FROM [unitcostdata6-4-2013]
UNION ALL
SELECT SummaryID, TaxSecond, TaxThird, TaxFourth, SourceID
FROM Tax;

请注意,当您使用 UNION 查询时,第一个和第二个查询之间的列数必须相同,并且数据类型必须相同。您将需要确定数据类型是否相同,否则必须将它们强制转换为相同。您还可以在第二个查询中添加一个新列以具有相同数量的列:

SELECT SummaryID, Component, Element, CapitalCost,Subsystem,SourceID
FROM [unitcostdata6-4-2013]
UNION ALL
SELECT SummaryID, TaxSecond, TaxThird, TaxFourth, null, SourceID
FROM Tax;

在没有看到您的数据或所需结果的情况下,您可能能够在SummaryId和上加入表SourceId

SELECT u.SummaryID, u.Component, u.Element, 
    u.CapitalCost,u.Subsystem,u.SourceID, 
    t.TaxSecond, t.TaxThird, t.TaxFourth
FROM [unitcostdata6-4-2013] as u
LEFT JOIN Tax as t
    on u.SourceId = t.SourceId
    and u.SummaryId = t.SummaryId
于 2013-06-12T21:42:36.430 回答
0

我不认为你想要一个UNION;将 UNIONS 视为使两个表合而为一——它们必须具有相同的列数和数据。只是从您的字段中猜测您想要这样的OUTER JOIN,也就是说,如果您不希望 JOIN 在任一表中消除任何数据。

SELECT ucd.*, Tax.*
FROM [unitcostdata6-4-2013] ucd
LEFT JOIN Tax on ucd.SummaryID = Tax.SummaryID and ucd.SourceID = Tax.SourceID
于 2013-06-12T21:42:34.330 回答
0

每个 SELECT 语句中的列数必须相同。第一个有 6 个,第二个有 5 个。确保它们也是相同的数据类型。

于 2013-06-12T21:44:00.387 回答