Access 2010 - 为什么查询产生的结果少于基表本身

时间:2014-08-21 20:59:15

标签: sql ms-access

我在Access 2010中创建了一个查询,该查询将右表中的数字映射到左表中。当我运行查询时,我得到的结果少于左表中的记录总数,我想知道为什么?似乎有些记录被遗漏了。有人知道我做错了吗?

编辑:我无法发布图片,所以我将以简化的方式在此处绘制:

  

-table 1 ....-........- table 2 ...-..........- table 3 ... -

     

- 数字1 - 。< - > .-数字1 -...- xxxxxxxx ...-

     

-xxxxxxxx ...-.......-数字2 - ..< - > ..-数字2 -

查询:

SELECT [2007].[Analyse (Nummer)], 
       [2007].[Analyse (Name)], 
       [2007].Faktura, BKPF2007.Referenz, 
       BSET.St 
FROM BSET 
INNER JOIN (2007 INNER JOIN BKPF2007 ON [2007].[Faktura] = BKPF2007.[Belegnr]) 
       ON BSET.[Belegnr] = BKPF2007.[Referenz] 
GROUP BY [2007].[Analyse (Nummer)], 
         [2007].[Analyse (Name)], 
         [2007].Faktura,
         BKPF2007.Art, 
         BKPF2007.Referenz, 
         BSET.St;

2 个答案:

答案 0 :(得分:1)

这是JOIN的一项功能 - 它不会显示不匹配的记录。如果没有详细说明,我可以提出一些建议。

  1. 删除其中一个联接,因此您的查询仅显示表1和表2.确保在继续加入表3之前获得预期结果
  2. 使用LEFT JOINS替换您的联接,即使右侧表格中没有匹配项也会显示所有记录。即使这并没有为您提供您所希望的解决方案,也可以帮助您诊断问题。

答案 1 :(得分:0)

这是您的结果被过滤的原因:

INNER JOIN

您需要将其设为LEFT JOIN,以便将所有结果保留在右表中不存在结果的位置。