首页 > 解决方案 > 将工作联合查询放入子查询会导致 JOIN 语法错误

问题描述

当我尝试在 Access 2016 中运行以下查询时,我收到“JOIN 操作中的语法错误”消息。

使用中的表:

VISIB_BOMS 基本上是物料清单中零件编号的自引用层次结构。(类似于员工可以管理其他员工的员工表的经典示例。)

ztbl_IFSParts 只是我想要获取子组件零件号的零件号的 1 个列表。

最终目标是从 ztbl_IFSParts 的部件中获得所有组件部件的单列表。然后,我将使用此列表从 JOIN 获取更多信息到其他表。

SELECT *
FROM
(
    /* CODE BETWEEN HERE WORKS */
    (
        SELECT DISTINCT aa0.PartNo AS PartNo
        FROM ztbl_IFSParts AS aa0
    )
    UNION ALL
    (
        SELECT DISTINCT b0.COMPPARTNO AS PartNo
        FROM
        (
            SELECT DISTINCT aa0.PartNo AS PartNo
            FROM ztbl_IFSParts AS aa0
        ) AS ab0
        LEFT JOIN VISIB_BOMS AS b0
        ON ab0.PartNo = b0.ASSYPARTNO
    )
    /* CODE BETWEEN HERE WORKS */   
)

如果我自己在注释之间运行代码,它工作正常,只有当我尝试对其执行任何 SELECT 操作时,它才会引发错误。

希望它有足够的信息来运行。

标签: ms-access

解决方案


删除 UNION ALL 两侧两个查询周围的括号解决了这个问题。


推荐阅读