数据库联接类型

联接是数据库的基本功能,通过它可以根据两个不同表和/或数据库之间的公用字段(也就是,联接条件)将它们的内容合并到一个视图中。有关更多信息,请参见关于表和数据库联接

当在您的文档中使用来自多个表和/或多个数据库的数据时,必须使用其中一种支持的数据库联接类型来联接这些表和/或数据库。

下面是在 BarTender 所支持的不同联接类型的示例中参考的样本表。表 A 列出了员工及其部门 ID,表 B 列出了部门名称和其部门 ID。这两个表所共有的用作联接条件的字段是“部门 ID”。

表 A

部门 ID

Joe

31

Jane

33

Mark

33

Mary

34

Dan

34

Donna

表 B

部门 ID

部门名称

31

销售

33

工程

34

办公室

35

市场营销

BarTender 支持以下联接类型用于多数据库联接。

在“数据库设置向导”中,可用的联接类型仅限于数据库提供商所支持的联接。例如,如果您为 OLEDB 数据库创建数据库联接,则一个联接类型“内部联接”可用。要解决此限制,可以为所需的每个表创建单独的数据库连接,然后使用“数据库设置”对话框的“多数据库联接”页面创建联接。

关闭内部联接

内部联接是常见的联接命令,通常被视为默认的联接类型。在内部联接中,通过返回和合并针对您指定的联接字段具有匹配值的指定表中的所有行,来创建新的结果。如果表 A 中的某行和表 B 中的某行之间不匹配,就会从结果中省略该行。

对于样本表,使用“部门 ID”作为联接条件的内部联接会生成以下结果集。

部门 ID

部门名称

Joe

31

销售

Jane

33

工程

Mark

33

工程

Mary

34

办公室

Dan

34

办公室

因为表 A 中 Donna 的部门 ID 列为空,所以她不会显示在所生成的内部联接表上。同样,如果为她指定了未在表 B 中列出的部门 ID,她也不会出现,因为没有任一相应行与她有关联。

空值将与其他值区别对待,并且无法与 0(零)值或者甚至与其他空值进行比较。因此,内部联接不能返回在联接条件中所使用的字段中包含空值的任何行,因为没有等价的字段值。

关闭左外部联接

左外部联接与内部联接不同,因为它会返回左表(表 A)中的所有行,即使在右表(表 B)中无任何匹配行。左表中在右表中无匹配行的行在联接结果中列为空值,表明在右表中无匹配行。在本示例中,即使员工没有指定的部门(正如下表中的“Donna”情况一样),结果集也会列出所有员工。

部门 ID

部门名称

Joe

31

销售

Jane

33

工程

Mark

33

工程

Mary

34

办公室

Dan

34

办公室

Donna

关闭右外部联接

右外部联接与左外部联接工作方式完全一样,只是方向相反,因此右表(表 B)中的所有条目都将在结果集内返回,即使在左表(表 A)中无任何匹配行。在本示例中,即使没有员工与某部门相关联(正如下表中的“市场营销”部门情况一样),结果集也会列出所有部门。

部门 ID

部门名称

Joe

31

销售

Jane

33

工程

Mark

33

工程

Mary

34

办公室

Dan

34

办公室

35

市场营销

关闭完全外部联接

完整外部联接返回一个结果,其中同时列出了右表和左表中的所有行,即使某个行在另一个表中没有匹配值也是如此。当某个行在另一个表中没有匹配的行时,缺少的值会作为空值返回。在本示例中,此结果既包括“市场营销”部门(尽管它没有员工),也包括员工“Donna”(尽管她没有部门)。

部门 ID

部门名称

Joe

31

销售

Jane

33

工程

Mark

33

工程

Mary

34

办公室

Dan

34

办公室

Donna

35

市场营销

相关主题