【问题标题】:Implementing nesting query rather than sub-query实现嵌套查询而不是子查询
【发布时间】:2014-05-02 14:28:54
【问题描述】:

我有一个 MS-Access 查询,它可以解释日期并为给定项目提供适当的状态。但是,此查询一次只提供一个部门的数据。我正在尝试消除子查询(下面以红色突出显示),以便我可以更轻松地将查询重新用于其他部门报告。

下面是子查询,名为qryProjectStatusDPLphase1

SELECT tblProject_HIF_FCF_CBH.HifFcfCbh
    , tblProject_HIF_FCF_CBH.ProjectNum
    , tblProject_HIF_FCF_CBH.Stat_CondCommitDt AS CondCommit
    , tblProject_HIF_FCF_CBH.Stat_FirmCommitDt AS FirmCommit
    , tblProject_HIF_FCF_CBH.Stat_FundAgtRecdDt AS FundAgt
    , tblProject_HIF_FCF_CBH.Stat_InDisbursemtDt AS Disbursemt
    , tblProject_HIF_FCF_CBH.Stat_ServicingDt AS Servicing
FROM tblProject_HIF_FCF_CBH
WHERE (tblProject_HIF_FCF_CBH.HifFcfCbh) Like "FCF";

我遇到的问题是,当我将红色的子查询直接插入到较大的操作中时,Access仍然坚持要查找子查询。因此,当我完全从 Access 中强制删除独立子查询时,我收到错误消息“Microsolft Access 数据库引擎找不到输入表或查询'qryProjectStatusDPLphase1'...”

为了找出问题所在,我通过一次添加一条来构建查询。当我自己运行红色子查询时,我没有收到任何错误。当我运行查询的红色 + 蓝色部分时,我再次没有收到任何错误。但是当我运行红色 + 蓝色 + 青色部分时,然后我得到错误。我的怀疑是表格的连接方式有问题,这会阻止红色 + 蓝色 + 蓝绿色正常工作。

不幸的是,我在这方面花了几天时间,似乎无法破解代码,所以我希望从云端获得一些智慧。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    您收到错误是因为您为内部 qryProjectStatusDPLphase1 查询设置了别名,并且您尝试在外部查询中再次调用它。不幸的是,它超出了外部查询的范围,所以它不起作用。

    如果您不想将 qryProjectStatusDPLphase1 保存为 Access 查询,只需将查询的 sql 代码粘贴到 INNER JOIN 的括号中即可:

    ...
    FROM(SELECT tblProject_HIF_FCF_CBH.HifFcfCbh
            , tblProject_HIF_FCF_CBH.ProjectNum
            , tblProject_HIF_FCF_CBH.Stat_CondCommitDt AS CondCommit
            , tblProject_HIF_FCF_CBH.Stat_FirmCommitDt AS FirmCommit
            , tblProject_HIF_FCF_CBH.Stat_FundAgtRecdDt AS FundAgt
            , tblProject_HIF_FCF_CBH.Stat_InDisbursemtDt AS Disbursemt
            , tblProject_HIF_FCF_CBH.Stat_ServicingDt AS Servicing
        FROM tblProject_HIF_FCF_CBH
        WHERE (tblProject_HIF_FCF_CBH.HifFcfCbh) Like "FCF"
        ) AS qryProjectStatusDPLphase1, zProjectStatusDPL
    )as t
    INNER JOIN (SELECT tblProject_HIF_FCF_CBH.HifFcfCbh
                    , tblProject_HIF_FCF_CBH.ProjectNum
                    , tblProject_HIF_FCF_CBH.Stat_CondCommitDt AS CondCommit
                    , tblProject_HIF_FCF_CBH.Stat_FirmCommitDt AS FirmCommit
                    , tblProject_HIF_FCF_CBH.Stat_FundAgtRecdDt AS FundAgt
                    , tblProject_HIF_FCF_CBH.Stat_InDisbursemtDt AS Disbursemt
                    , tblProject_HIF_FCF_CBH.Stat_ServicingDt AS Servicing
                FROM tblProject_HIF_FCF_CBH
                WHERE (tblProject_HIF_FCF_CBH.HifFcfCbh) Like "FCF") AS a
    ...
    

    【讨论】:

      【解决方案2】:

      查看您的屏幕截图,您仍在尝试将嵌套查询 t 加入到子查询 qryProjectStatusDPLphase1

      AS t
      INNER JOIN qryProjectStatusDPLphase1 As a
          ON t.ProjectNum = a.ProjectNum
      

      您需要用嵌套查询替换 qryProjectStatusDPLphase1 的第二个实例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-17
        • 1970-01-01
        相关资源
        最近更新 更多