Sql MS Access 2003中的查询,使用嵌套选择的帮助

Sql MS Access 2003中的查询,使用嵌套选择的帮助,sql,ms-access,Sql,Ms Access,如果我有三个查询,那么查询中的行并不都相同。如何编写一个SQL语句,将所有三个查询及其所有数据行组合成一个最终查询 我目前使用的查询保留了一些行,我假设是因为这些行并不都相等,而且据我所知,Access不支持完全外部联接。以下是我当前使用的查询: SELECT ZBASED.ACCT_UNIT, CCtable.CenterName, ZBASED.ACCOUNT, ZBASED.ACCOUNT_DESC, qryBUD11.Bud11, qryB

如果我有三个查询,那么查询中的行并不都相同。如何编写一个SQL语句,将所有三个查询及其所有数据行组合成一个最终查询

我目前使用的查询保留了一些行,我假设是因为这些行并不都相等,而且据我所知,Access不支持完全外部联接。以下是我当前使用的查询:

SELECT
    ZBASED.ACCT_UNIT,
    CCtable.CenterName,
    ZBASED.ACCOUNT,
    ZBASED.ACCOUNT_DESC,
    qryBUD11.Bud11,
    qryBUD10.Bud10,
    qryACTvPROJ.ActvProj10
FROM
    CCtable,
    (
        (ZBASED INNER JOIN qryACTvPROJ ON ZBASED.ACCOUNT=qryACTvPROJ.ACCOUNT)
        INNER JOIN qryBUD11 ON ZBASED.ACCOUNT=qryBUD11.ACCOUNT
    )
INNER JOIN qryBUD10 ON
    ZBASED.ACCOUNT=qryBUD10.ACCOUNT
WHERE
    ZBASED.ACCT_UNIT = [Cost Center] AND
    CCtable.CenterNo = [Cost Center]
ORDER BY ZBASED.ACCOUNT;
qryACTvPROJ

qryBUD11

qryBUD10


显然,我需要在SELECT语句中创建一个嵌套的SELECT。有人能帮我吗?

在这三个查询中,所选列、联接和排序方式似乎都是相同的。唯一改变的是WHERE子句。所以也许你只需要把这三个条款放在一起

SELECT ...list of columns...
    FROM BUDGET INNER JOIN ZBASED ON BUDGET.ACCOUNT=ZBASED.ACCOUNT
WHERE (((BUDGET.FISCAL_YEAR)=2010) And ((BUDGET.BUDGET_NBR)=6) And ((ZBASED.ACCT_UNIT)=BUDGET.ACCT_UNIT And (ZBASED.ACCT_UNIT)=[Cost Center]))
OR (((BUDGET.FISCAL_YEAR)=2011) AND ((BUDGET.BUDGET_NBR)=2) AND ((ZBASED.ACCT_UNIT)=[BUDGET].[ACCT_UNIT] And (ZBASED.ACCT_UNIT)=[Cost Center]))
OR (((BUDGET.FISCAL_YEAR)=2010) AND ((BUDGET.BUDGET_NBR)=1) AND ((ZBASED.ACCT_UNIT)=BUDGET.ACCT_UNIT) And ((ZBASED.ACCT_UNIT)=[Cost Center]))
ORDER BY ZBASED.ACCOUNT

给出或接受一两个查询。

您能给我们提供更多关于您尝试合并的查询的信息吗?以下是3个查询。对不起,我不知道如何编辑。@Brian。这在我的CCquery中把所有的帐户都集中在一起,但是它省略了我在查询中需要的一些其他信息。我有个问题想问你,你能把查询转换成嵌套的select或select中的select吗?如果是这样的话,你会怎么写呢?我不确定嵌套的select是否是你问题的解决方案;查询中缺少哪些信息?当我们把想要的东西分类后,我们就可以担心得到它的方法了。我在qrybud11中有16行,在qrybud10中有15行,在qryactvproj中有16行。当我使用CCquery将所有单独的查询组合在一起时,我只得到13行数据,因为如果查询没有相同的行信息,它会忽略整行。我需要它从所有查询中导入所有行,如果一个查询没有相同的信息,只需添加一个0。我想我可以看到您的意图……您将这三个查询的结果合并成一个表,这样做时,一些行似乎消失了。我认为这是内部连接的一种效果;只有当帐户出现在所有三个查询中时,才会得到结果。我建议做一个完整的外部连接。检查结果16*15*16行,这样就不会太可怕了,然后看看需要什么连接条件才能获得所需的行。我听说Access不支持完全外部连接。这不准确吗?我还尝试了完整的外部连接,并发现了一个连接错误。不确定它到底说了什么,但它不允许我运行查询。
SELECT BUDGET.FISCAL_YEAR, BUDGET.BUDGET_NBR, BUDGET.ACCT_UNIT, BUDGET.ACCOUNT, ZBASED.ACCOUNT_DESC, BUDGET.DB_AMOUNT_01+BUDGET.DB_AMOUNT_02+BUDGET.DB_AMOUNT_03+BUDGET.DB_AMOUNT_04+BUDGET.DB_AMOUNT_05+BUDGET.DB_AMOUNT_06+BUDGET.DB_AMOUNT_07+BUDGET.DB_AMOUNT_08+BUDGET.DB_AMOUNT_09+BUDGET.DB_AMOUNT_10+BUDGET.DB_AMOUNT_11+BUDGET.DB_AMOUNT_12+BUDGET.CR_AMOUNT_01+BUDGET.CR_AMOUNT_02+BUDGET.CR_AMOUNT_03+BUDGET.CR_AMOUNT_04+BUDGET.CR_AMOUNT_05+BUDGET.CR_AMOUNT_06+BUDGET.CR_AMOUNT_07+BUDGET.CR_AMOUNT_08+BUDGET.CR_AMOUNT_09+BUDGET.CR_AMOUNT_10+BUDGET.CR_AMOUNT_11+BUDGET.CR_AMOUNT_12 AS Bud11
FROM BUDGET INNER JOIN ZBASED ON BUDGET.ACCOUNT = ZBASED.ACCOUNT
WHERE (((BUDGET.FISCAL_YEAR)=2011) AND ((BUDGET.BUDGET_NBR)=2) AND ((ZBASED.ACCT_UNIT)=[BUDGET].[ACCT_UNIT] And (ZBASED.ACCT_UNIT)=[Cost Center]))
ORDER BY ZBASED.ACCOUNT;
SELECT BUDGET.FISCAL_YEAR, BUDGET.BUDGET_NBR, BUDGET.ACCT_UNIT, BUDGET.ACCOUNT, ZBASED.ACCOUNT_DESC, BUDGET.DB_AMOUNT_01+BUDGET.DB_AMOUNT_02+BUDGET.DB_AMOUNT_03+BUDGET.DB_AMOUNT_04+BUDGET.DB_AMOUNT_05+BUDGET.DB_AMOUNT_06+BUDGET.DB_AMOUNT_07+BUDGET.DB_AMOUNT_08+BUDGET.DB_AMOUNT_09+BUDGET.DB_AMOUNT_10+BUDGET.DB_AMOUNT_11+BUDGET.DB_AMOUNT_12+BUDGET.CR_AMOUNT_01+BUDGET.CR_AMOUNT_02+BUDGET.CR_AMOUNT_03+BUDGET.CR_AMOUNT_04+BUDGET.CR_AMOUNT_05+BUDGET.CR_AMOUNT_06+BUDGET.CR_AMOUNT_07+BUDGET.CR_AMOUNT_08+BUDGET.CR_AMOUNT_09+BUDGET.CR_AMOUNT_10+BUDGET.CR_AMOUNT_11+BUDGET.CR_AMOUNT_12 AS Bud10
FROM BUDGET INNER JOIN ZBASED ON BUDGET.ACCOUNT=ZBASED.ACCOUNT
WHERE (((BUDGET.FISCAL_YEAR)=2010) AND ((BUDGET.BUDGET_NBR)=1) AND ((ZBASED.ACCT_UNIT)=BUDGET.ACCT_UNIT) And ((ZBASED.ACCT_UNIT)=[Cost Center]))
ORDER BY ZBASED.ACCOUNT;
SELECT ...list of columns...
    FROM BUDGET INNER JOIN ZBASED ON BUDGET.ACCOUNT=ZBASED.ACCOUNT
WHERE (((BUDGET.FISCAL_YEAR)=2010) And ((BUDGET.BUDGET_NBR)=6) And ((ZBASED.ACCT_UNIT)=BUDGET.ACCT_UNIT And (ZBASED.ACCT_UNIT)=[Cost Center]))
OR (((BUDGET.FISCAL_YEAR)=2011) AND ((BUDGET.BUDGET_NBR)=2) AND ((ZBASED.ACCT_UNIT)=[BUDGET].[ACCT_UNIT] And (ZBASED.ACCT_UNIT)=[Cost Center]))
OR (((BUDGET.FISCAL_YEAR)=2010) AND ((BUDGET.BUDGET_NBR)=1) AND ((ZBASED.ACCT_UNIT)=BUDGET.ACCT_UNIT) And ((ZBASED.ACCT_UNIT)=[Cost Center]))
ORDER BY ZBASED.ACCOUNT