我正在使用Access中的连接表(实际上是定义了parent> child关系的自连接表),并且遇到了一些我需要进行的连接的麻烦。
我目前在一个查询中具有以下内容:
(SELECT AccountID
FROM tblAccount
WHERE AccountTypeID IN (1, 2))
UNION (SELECT ChildAccountID
FROM qryAccJunctionDetails
WHERE (ParentAccountTypeID IN (1, 2)));
正确运行的方法:它提供的列表,AccountID
其中sAccountTypeID
是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))
但仍然出现相同的错误。
通过两个单独的比较来做到这一点:
SELECT AccountName
FROM qryAccountNamesConcat
WHERE AccountID IN (SELECT AccountID
FROM tblAccount
WHERE AccountTypeID IN (1, 2)
) OR
AccountID IN (SELECT ChildAccountID
FROM qryAccJunctionDetails
WHERE ParentAccountTypeID IN (1, 2)
);
这也可能具有更好的性能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句