【发布时间】:2014-10-07 14:46:14
【问题描述】:
我正在使用 Access 中的一个联结表(实际上是一个定义父>子关系的自联接表)并且在我需要进行的一些联接方面遇到了麻烦。
我目前在一个查询中包含以下内容:
(SELECT AccountID
FROM tblAccount
WHERE AccountTypeID IN (1, 2))
UNION (SELECT ChildAccountID
FROM qryAccJunctionDetails
WHERE (ParentAccountTypeID IN (1, 2)));
哪个工作正常:它提供AccountIDs 的列表,其中AccountTypeID 为1 或2,或者该帐户是另一个帐户的子帐户AccountTypeID = 1 或2。
当我尝试将其用作子查询来查找与此结果相关的其他字段值时,如下所示:
SELECT AccountName
FROM qryAccountNamesConcat
WHERE AccountID IN(
(
SELECT AccountID
FROM tblAccount
WHERE AccountTypeID IN (1, 2)
)
UNION (
SELECT ChildAccountID
FROM qryAccJunctionDetails
WHERE (ParentAccountTypeID IN (1, 2))
)
);
我收到错误:"Syntax error (missing operator) in query expression 'AccountID IN(...." 然后继续列出到语句的末尾。
我已经尝试过它的变体,但似乎无法让它发挥作用。可能是我完全误解了如何以这种方式将子查询放在一起。
编辑:现在修复了(ParentAccountTypeID IN (1, 2)) 末尾缺少的括号,但仍然出现相同的错误。
【问题讨论】:
-
您在
WHERE (ParentAccountTypeID IN (1, 2)末尾缺少一个括号