Ms Access 简明教程
MS Access - Joins
数据库是一个数据表集合,这些数据表允许相互进行逻辑关系。你可以使用关系通过表中公共的字段来连接表。一个表可以是任意数量的关系的一部分,但每个关系始终恰好有两个表。在查询中,关系由 Join 表示。
What is Join
联接指定如何在一个数据库中的两个或多个表中组合记录。从概念上来说,联接与表关系非常相似。实际上,联接对于查询就像关系对于表一样。
以下是本章将讨论的两种基本类型的联接 −
-
The inner join
-
The outer join
两者都可以轻松地从 queries design view 中创建。
Left Outer Join & Right Outer Join
让我们理解 Left Outer Join 和 Right Outer Join -
-
你可以选择显示所有行的表格。
-
你可以创建左外连接,它将包含第一个表格的所有行。
-
你可以创建右外连接,它将包含第二个表格的所有行。
让我们转到 Create 选项卡,从 Design View 创建一个查询。选择 tblProjects 和 tblTasks ,关闭“显示表格”对话框,如图所示。
添加 tblProjects 中的 ProjectName 字段,以及 tblTasks 表格中的 TaskTitle, StartDate 和 DueDate 。
让我们运行这个查询。
我们只显示了几个项目的记录。一些项目有很多与该项目相关联的任务,这些信息通过 ProjectID 字段关联。
-
当我们在Microsoft Access中创建这个查询时,Access是从我们创建的关系中获取这种关系。
-
默认情况下,它会在这两个表格之间创建所谓的 Inner Join between these two fields ,这就是它如何从这两个表格中关联这些信息。
-
它只向我们显示匹配项,因此,当我们运行此查询时, tblProjects 中列出了很多其他未显示为该查询记录集一部分的项目,这是因为这两个表格是如何通过内连接连接在一起的,这再次是任何查询的默认连接。
但是,如果你想改变关系,假设你想创建外连接,或者换句话说,显示 tblProjects 的所有项目,该表格中的所有记录以及 tblTasks 中的所有任务——打开连接属性;只需双击关系行即可。
Access将在连接属性对话框中显示左表格名称和右表格名称。
-
左列名和右列名,第一个单选按钮仅仅只包含两个表格的连接字段相等的行,那便是内连接,在创建关系以及在查询中创建连接时默认选择这个选项,但是你可以更改它。
-
我们还有两个其他选择;我们可以包含 tblProjects 中的所有记录,以及仅包含连接字段相等的 tblTasks 中的那些记录,此操作为左外连接。
-
我们有第三个选项,包含tblTasks中的所有记录,以及仅包含连接字段相等的tblProjects中的那些记录,此操作为右外连接。
这些是你能从“设计视图”轻松创建的不同类型的连接。我们选择第二个选项,即左外连接,然后单击 Ok 。
让我们看看其他步骤 -
当你查看关系行时,你会看到一个指向 tblTasks 的 ProjectID 的小箭头。当你运行此查询时,你将看到以下结果。
如您所见,它向我们展示了每个项目的名称,无论它是否具有关联的任务。您还将看到许多空字段。所有这些都将为空,因为在这些字段来自的 tblTasks 中没有相关信息。现在,让我们再次转到 Design View ,然后双击关系线。
在“联接属性”对话框中,选择第三个选项,即右外联接,然后单击 Ok 。
现在,看看我们的关系线。您将看到一个箭头现在指向 tblProjects 中的 ProjectID 。当您运行此查询时,您将看到以下结果。
Self-Joins
自联接是另一种类型的联接。自联接关联同一表内匹配的字段。例如,查看具有主管字段的员工表,该字段引用存储在同一表内另一个字段(员工 ID)中的同类数字。
如果我们想了解 Kaitlin Rasmussen 的主管是谁,我们将不得不获取存储在该主管字段中的号码并在完全相同的表内该员工 ID 字段中查找它,才能知道 Charity Hendricks 是主管。
此表不是关系数据库的理想结构,因为它未经过规范化。
如果我们有一种情况,即我们想创建仅列出员工姓名及其主管姓名的查询,则除非我们创建自联接,否则我们无法轻松查询它。
要查看自联接,请使用以下字段创建一张表并输入一些数据。
在这里,我们再次想创建一个包含员工名字和主管姓名的列表。让我们从 query design view 创建查询。
现在,添加 tblEmployees 表。
关闭此对话框。
现在,为我们的员工添加名字和姓氏。
我们现在需要一种方法在此表及其自身之间创建关系。为此,我们需要打开 the show table dialog box 并再次添加 tblEmployees。
我们在本查询视图中创建了相同表的另一份副本。现在,我们需要创建自联接。为此,单击 tblEmployees 表中的主管,按住鼠标按钮,将其直接拖到复制表 tblEmployees_1 中的 EmployeeID 上方。然后,从该复制表中添加名字和姓氏。
现在让我们运行您的查询,您将看到以下结果。
它显示员工的名字和他们主管的名字。这是如何在 Microsoft Access 中创建自联接的方法。