实现嵌套查询而不是子查询

时间:2014-05-02 14:28:55

标签: sql ms-access

我有一个MS-Access查询,它解释日期并为给定项目提供适当的状态。但是,此查询一次仅提供一个部门的数据。我试图消除子查询(在下面用红色突出显示),这样我就可以更容易地重新调整其他部门报告的查询。

query with subquery

以下是名为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'......”

query without subquery

为了确定问题,我通过一次添加一个查询来构建查询。当我单独运行红色子查询时,我没有错误。当我运行查询的红色+蓝色部分时,我再次没有错误。但是当我运行红色+蓝色+蓝绿色部分时,然后我收到错误。我怀疑表格的连接方式有问题,这会阻止红色+蓝色+蓝色正确地协同工作。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

您收到错误是因为您对内部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
...