将有效的联合查询放入子查询会导致JOIN语法错误

时间:2018-09-03 11:16:33

标签: ms-access

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

正在使用的表:

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

ztbl_IFSParts只是我要获取其子组件零件号的零件号的一列表。

最终目标是为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操作时,它才会引发错误。

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

1 个答案:

答案 0 :(得分:0)

去掉UNION ALL两侧任意两个查询的括号即可解决此问题。