我需要UNION ALL
或OUTER JOIN
来链接两个表。鉴于我使用了与microsoft网站(http://office.microsoft.com/en-us/access-help/combine-the-results-of-several-select-queries-by-using-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;
感谢任何帮助
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:0)
每个SELECT语句中必须具有相同数量的列。第一个有6个,第二个有5.确保它们也是相同的数据类型。