2

我有两张桌子。表 1 包含唯一的帐号和唯一的帐户名称。表 2 包含与表 1 的帐号相关的帐号,但也包含另一个“父”帐号。

我正在尝试查找 Table1 中存在但 Table2 中不存在的所有帐号。此外,我想在表 2 中每个“父”帐号丢失的每个丢失的帐号。

前任。

表格1

AccountNum  AccountName
1           a
2           b
3           c
4           d  

表2

ParentAccount  AccountNum  AccountName
100            1           a
100            2           b
200            1           a
200            2           b
200            4           d

我希望我的结果返回:

100            3           c
100            4           d
200            3           c

到目前为止,我只能弄清楚如何返回表 2 中根本不存在但不受父帐户限制的值。我会将表格分开,但我有数百个父帐户。

SELECT Table1.AccountNum, Table1.AccountName
FROM Table1 LEFT JOIN Table2 ON Table1.[AccountNum] = Table2.[AccountNum]
WHERE (((Table2.AccountNum) Is Null));

任何帮助将不胜感激。我已经坚持了很长一段时间,并且正在使用 Access 2013。

4

1 回答 1

0

让我们首先创建一个名为 [AccountCombinations] 的已保存查询,它为我们提供 ParentAccount 和 AccountNum 的所有组合:

SELECT t2.ParentAccount, t1.AccountNum, t1.AccountName
FROM 
Table1 t1,
(
    SELECT DISTINCT ParentAccount FROM Table2
) t2

该查询返回

ParentAccount  AccountNum  AccountName
-------------  ----------  -----------
          100           1  a          
          200           1  a          
          100           2  b          
          200           2  b          
          100           3  c          
          200           3  c          
          100           4  d          
          200           4  d          

现在我们可以只提取 Table2 中不存在的那些

SELECT * 
FROM AccountCombinations
WHERE NOT EXISTS
(
    SELECT * 
    FROM Table2
    WHERE AccountCombinations.ParentAccount=Table2.ParentAccount
        AND AccountCombinations.AccountNum=Table2.AccountNum
)
ORDER BY ParentAccount, AccountNum

……归来……

ParentAccount  AccountNum  AccountName
-------------  ----------  -----------
          100           3  c          
          100           4  d          
          200           3  c          
于 2013-06-12T09:12:26.840 回答