MS Access - Join 连接

数据库是数据表的集合,这些数据表之间存在逻辑关系。 您可以使用关系通过表的共同字段来连接表。 一个表可以是任意数量的关系的一部分,但每个关系始终只有两个表。 在查询中,关系由 Join 表示。

什么是连接

连接指定如何组合数据库中两个或多个表中的记录。 从概念上讲,联接与表关系非常相似。 事实上,连接之于查询就像关系之于表。

以下是我们将在本章中讨论的两种基本连接类型 −

  • 内连接
  • 外连接

这两者都可以从查询设计视图轻松创建。

内连接

现在让我们了解内连接

  • 最常见的联接类型是内部联接,这也是 Microsoft Access 中的默认联接类型。
  • 内部联接将仅显示两个表中的联接字段相等的行或记录。
  • 此连接类型查看那些公共字段及其中包含的数据。 它只显示匹配项。
内连接

外连接

现在让我们了解什么是外部连接

  • 外连接显示一个表中的所有行,并且仅显示另一表中连接字段相等的行或记录。
  • 换句话说,外连接显示一个表中的所有行,并且仅显示另一表中的相应行。
外连接

还有其他连接类型 −

左外连接和右外连接

现在让我们了解左外连接右外连接

  • 您可以选择将显示所有行的表格。
  • 您可以创建一个左外连接,其中将包含第一个表中的所有行。
左连接
  • 您可以创建一个右外连接,其中将包含第二个表中的所有行。
右连接

现在让我们转到创建选项卡并从设计视图创建一个查询。 选择tblProjectstblTasks并关闭"显示表"对话框,如以下屏幕截图所示。

TblTasks

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

添加项目名称

现在让我们运行查询。

项目详细信息

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

  • 当我们在 Microsoft Access 中创建此查询时,Access 将从我们创建的关系中获取此关系。

  • 默认情况下,它会在这两个表之间创建所谓的这两个字段之间的内部联接,这就是它如何将这两个表中的信息关联在一起。

  • 它只向我们显示匹配项,因此当我们运行此查询时,tblProjects 中列出的许多其他项目没有出现在此查询中的记录集中,这是因为 如何通过内部联接将这两个表联接在一起,这又是任何查询的默认联接。

但是,如果您想更改关系,假设您想创建一个外部联接,或者换句话说,显示 tblProjects 中的所有项目、该表中的每条记录以及所有 tblTasks 中的任务 — 打开连接属性; 我们只需双击关系线即可完成此操作。

连接属性

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

  • 左列名称和右列名称以及第一个单选按钮仅包含两个表中的联接字段相等的行,即内部联接,这是创建关系时默认选择的内容, 在查询中创建联接时,但是您可以更改它。

  • 我们还有另外两个选择; 我们可以包含 tblProjects 中的所有记录,并且仅包含 tblTasks 中连接字段相等且此为左外连接的记录。

  • 我们还有第三种选择,包括 tblTasks 中的所有记录,并且仅包括 tblProjects 中连接字段相等的记录,这就是右外连接。

这些是您可以从设计视图轻松创建的不同类型的连接。 让我们选择第二个选项,即"左外连接",然后单击确定

现在让我们看看其他步骤 −

其他步骤

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

箭头指向结果

正如您所看到的,它向我们显示了每个项目名称,无论它是否有相关任务。 您还会看到一堆空字段。 所有这些都将是空白的,因为这些字段的来源 tblTasks 中没有相关信息。 现在让我们再次转到设计视图并双击关系线。

相关任务

在"连接属性"对话框中,选择第三个选项,即"右外连接",然后单击确定

其他步骤

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

关系线

自连接

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

自连接

如果我们想知道 Kaitlin Rasmussen 的主管是谁,我们必须获取该主管字段中存储的号码,并在该员工 ID 字段的同一个表中进行查找,才能知道 Charity Hendricks 是主管。

该表不是关系数据库的理想结构,因为它没有标准化。

如果我们想要创建一个查询,仅列出员工姓名及其主管姓名,则没有简单的方法可以查询,除非我们创建自联接。

要查看自联接,请创建一个包含以下字段的表并输入一些数据。

创建表

在这里,我们要再次创建一个列表,其中包含员工的名字,然后是主管的名字。 让我们从查询设计视图创建一个查询。

现在,添加 tblEmployees 表。

添加 TblEmployees

关闭此对话框。

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

员工姓名

我们现在需要一种方法来创建该表与其自身之间的关系。 为此,我们需要打开显示表对话框并再次添加 tblEmployees。

显示表对话框

我们在此查询视图中创建了同一个表的另一个副本。 现在,我们需要创建自连接。 为此,请单击 tblEmployees 表中的"Supervisor",按住鼠标按钮并将其放在复制的表中的 EmployeeID 的顶部 — tblEmployees_1。 然后,添加复制的表中的名字和姓氏。

创建自连接

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

显示名称

它显示员工的姓名及其主管的姓名。 这就是在 Microsoft Access 中创建自联接的方法。