设置联接类型
定义表关系时,有关关系的事实可以为查询设计提供信息。 例如,如果定义了两个表之间的关系,然后创建了一个使用这两个表的查询, Access 根据关系中指定的字段自动选择默认匹配字段。 可在查询中覆盖这些初始默认值,但该关系提供的值经过验证通常是正确的。 在除了最简单的数据库之外的所有数据库中,由于匹配和从多个表中汇聚数据是经常要执行的操作,因此通过创建关系来设置默认值可以节省时间,并且非常有用。
多表查询通过匹配公共字段中的值来组合多个表中的信息。 执行匹配和组合的操作称为联接。 例如,假设您要显示客户订单。 可以创建一个查询,以使“客户”表和“订单”表通过“客户 ID”字段联接起来。 查询结果中只包含找到对应匹配的行的客户信息和订单信息。
可为每个关系指定的一个值是联接类型。 联接类型指示 Access 在查询结果中包括哪些记录。 例如,再次考虑这样一个查询,它将“客户”表和“订单”表通过代表“客户 ID”的公共字段联接起来。 使用默认联接类型(称为内部联接)时,查询只返回公共字段(也称为联接字段)相等的“客户”行和“订单”行。
但是,假设您要包括所有客户 — 即使是尚未下任何订单的客户。 要实现此功能,必须将联接类型由内部联接更改为左外部联接。 左外部联接将返回关系左侧表中的所有行,以及关系右侧表中的匹配行。 右外部联接则返回右侧的所有行,以及左侧的匹配行。
注意: 在这种情况下,“左”和“右”指的是表在“编辑关系”对话框中而不是在“关系”窗口中的位置。
应该先考虑最希望通过在此关系中联接表的查询获取的结果,然后再相应设置联接类型。
设置联接类型
在“编辑关系”对话框中,单击“联接类型”。
将显示“联接属性”对话框。
选择你的选择,然后单击“ 确定”。
下表(使用“客户”和“订单”表)显示了“联接属性”对话框中显示的三种选择、它们使用的联接类型以及为每个表返回所有行还是匹配行。
选项
关系联接
左表
右表
1. 只包括两个表中的联接字段相同的行。
内部联接
匹配行
匹配行
2. 包括“客户”表中的所有记录以及“订单”表中联接字段相同的记录。
左外部联接
所有行
匹配行
3. 包括“订单”表中的所有记录以及“客户”表中联接字段相同的记录。
右外部联接
匹配行
所有行
当您选择选项 2 或选项 3 时,会在关系线上显示一个箭头。 此箭头指向只显示匹配行的关系一侧。