Ms Access 简明教程

MS Access - Joins

数据库是一个数据表集合,这些数据表允许相互进行逻辑关系。你可以使用关系通过表中公共的字段来连接表。一个表可以是任意数量的关系的一部分,但每个关系始终恰好有两个表。在查询中,关系由 Join 表示。

What is Join

联接指定如何在一个数据库中的两个或多个表中组合记录。从概念上来说,联接与表关系非常相似。实际上,联接对于查询就像关系对于表一样。

以下是本章将讨论的两种基本类型的联接 −

  1. The inner join

  2. The outer join

两者都可以轻松地从 queries design view 中创建。

Inner Join

现在让我们了解 Inner Join

  1. 最常见的联接类型是内部联接,这也是 Microsoft Access 中的默认联接类型。

  2. 内部联接将仅显示两个表中联接字段相等的那些行或记录。

  3. 这种联接类型查看那些公共字段和其中包含的数据。它仅显示匹配项。

inner join

Outer Join

现在让我们了解 Outer Join 是什么 −

  1. 外部联接将显示来自一个表的所有行,以及只显示来自联接字段相等的另一个表的那些行或记录。

  2. 换句话说,外部联接显示来自一个表的所有行,以及来自另一个表中仅对应的行。

outer join

还有其他联接类型 −

Left Outer Join & Right Outer Join

让我们理解 Left Outer JoinRight Outer Join -

  1. 你可以选择显示所有行的表格。

  2. 你可以创建左外连接,它将包含第一个表格的所有行。

left join
  1. 你可以创建右外连接,它将包含第二个表格的所有行。

right join

让我们转到 Create 选项卡,从 Design View 创建一个查询。选择 tblProjectstblTasks ,关闭“显示表格”对话框,如图所示。

tbltasks

添加 tblProjects 中的 ProjectName 字段,以及 tblTasks 表格中的 TaskTitle, StartDateDueDate

add projectname

让我们运行这个查询。

project details

我们只显示了几个项目的记录。一些项目有很多与该项目相关联的任务,这些信息通过 ProjectID 字段关联。

  1. 当我们在Microsoft Access中创建这个查询时,Access是从我们创建的关系中获取这种关系。

  2. 默认情况下,它会在这两个表格之间创建所谓的 Inner Join between these two fields ,这就是它如何从这两个表格中关联这些信息。

  3. 它只向我们显示匹配项,因此,当我们运行此查询时, tblProjects 中列出了很多其他未显示为该查询记录集一部分的项目,这是因为这两个表格是如何通过内连接连接在一起的,这再次是任何查询的默认连接。

但是,如果你想改变关系,假设你想创建外连接,或者换句话说,显示 tblProjects 的所有项目,该表格中的所有记录以及 tblTasks 中的所有任务——打开连接属性;只需双击关系行即可。

join properties

Access将在连接属性对话框中显示左表格名称和右表格名称。

  1. 左列名和右列名,第一个单选按钮仅仅只包含两个表格的连接字段相等的行,那便是内连接,在创建关系以及在查询中创建连接时默认选择这个选项,但是你可以更改它。

  2. 我们还有两个其他选择;我们可以包含 tblProjects 中的所有记录,以及仅包含连接字段相等的 tblTasks 中的那些记录,此操作为左外连接。

  3. 我们有第三个选项,包含tblTasks中的所有记录,以及仅包含连接字段相等的tblProjects中的那些记录,此操作为右外连接。

这些是你能从“设计视图”轻松创建的不同类型的连接。我们选择第二个选项,即左外连接,然后单击 Ok

让我们看看其他步骤 -

other steps

当你查看关系行时,你会看到一个指向 tblTasksProjectID 的小箭头。当你运行此查询时,你将看到以下结果。

arrow pointing results

如您所见,它向我们展示了每个项目的名称,无论它是否具有关联的任务。您还将看到许多空字段。所有这些都将为空,因为在这些字段来自的 tblTasks 中没有相关信息。现在,让我们再次转到 Design View ,然后双击关系线。

related task

在“联接属性”对话框中,选择第三个选项,即右外联接,然后单击 Ok

other steps

现在,看看我们的关系线。您将看到一个箭头现在指向 tblProjects 中的 ProjectID 。当您运行此查询时,您将看到以下结果。

relationship line

Self-Joins

自联接是另一种类型的联接。自联接关联同一表内匹配的字段。例如,查看具有主管字段的员工表,该字段引用存储在同一表内另一个字段(员工 ID)中的同类数字。

self joins

如果我们想了解 Kaitlin Rasmussen 的主管是谁,我们将不得不获取存储在该主管字段中的号码并在完全相同的表内该员工 ID 字段中查找它,才能知道 Charity Hendricks 是主管。

此表不是关系数据库的理想结构,因为它未经过规范化。

如果我们有一种情况,即我们想创建仅列出员工姓名及其主管姓名的查询,则除非我们创建自联接,否则我们无法轻松查询它。

要查看自联接,请使用以下字段创建一张表并输入一些数据。

create table

在这里,我们再次想创建一个包含员工名字和主管姓名的列表。让我们从 query design view 创建查询。

现在,添加 tblEmployees 表。

add tblemployees

关闭此对话框。

现在,为我们的员工添加名字和姓氏。

names of employee

我们现在需要一种方法在此表及其自身之间创建关系。为此,我们需要打开 the show table dialog box 并再次添加 tblEmployees。

show table dialog box

我们在本查询视图中创建了相同表的另一份副本。现在,我们需要创建自联接。为此,单击 tblEmployees 表中的主管,按住鼠标按钮,将其直接拖到复制表 tblEmployees_1 中的 EmployeeID 上方。然后,从该复制表中添加名字和姓氏。

create self join

现在让我们运行您的查询,您将看到以下结果。

display names

它显示员工的名字和他们主管的名字。这是如何在 Microsoft Access 中创建自联接的方法。