视频:
在视频中
当 Access 确定查询可以根据先完成的联接提供不同的结果时,将显示“不明确的外部联接”消息。 若要使查询运行,需要进行一些更改。 最佳解决方案通常是将查询拆分为多个部分。 也就是说,对其进行设置,以便至少一个联接在较小的“子”查询中完成,然后你将其联接到“父”查询中的其他表或查询。 然后,Access 先在子查询 (或查询) 执行联接,最后在父查询中执行联接,从而消除歧义。
根据查询中有多少个表,可能需要创建多个子查询以避免不明确的外部联接。 此视频演示了一个简单的三个表示例,其中两个等价联接的表被分隔为一个子查询,然后在父查询中完成与第三个表的外部联接。 下面是基本步骤,假设你已经非常熟悉 创建简单的选择查询:
-
创建一个新的子查询,其中包含要首先联接 (视频中的表,这些表是公司和人员表) 。
-
在子查询中,双击所需的输出字段,使其显示在查询网格中。
重要: 请务必包含原始查询中的联接字段。 在视频示例中,公司已使用 RegionID 字段联接到区域,因此我们在子查询的查询网格中包含 RegionID。
-
保存并关闭子查询,并在“设计”视图中打开原始查询。 这将成为父查询。
-
删除添加到子查询的表,然后添加子查询 (设计 > 添加表 (显示 Access 2013 ) > 查询中的表,或仅将子查询从导航窗格拖动到父查询) 。
-
在父查询中,像以前一样建立联接,仅这次与子查询建立联接。
-
将子查询中的输出字段添加到查询网格。
-
保存并运行父查询。
不明确外部联接的经验法则
如果查询中有两个或更多个联接,其中一个联接是指向等联接的外部联接,或者有两个外部联接相互指向,例如,这两个联接配置不明确,需要拆分为单独的查询:
Table1 --> Table2 --- Table3
Table1 --> Table2 <-- Table3
指向同一方向或远离其他外部联接或等值联接的外部联接是可以的:
Table1 --> Table2 --> Table3
Table1 <-- Table2 --> Table3
Table1 <-- Table2 --- Table3