JOIN 命令

概念信息

联接表

将来自两个 Analytics 表的域合并为单个新的 Analytics 表。

说明

要使用模糊匹配来联接表,请参见FUZZYJOIN 命令

语法

JOIN {PKEY 主键域|PKEY ALL <EXCLUDE 文件名 <...n>>} {FIELDS 主域|FIELDS ALL <EXCLUDE 域名称 <...n>>} {SKEY 辅助键域|SKEY ALL <EXCLUDE 域名称 <...n>>} <WITH 辅助域|WITH ALL <EXCLUDE 域名称 <...n>>> {无关键字|MANY|UNMATCHED|PRIMARY|SECONDARY|PRIMARY SECONDARY} <IF 测试> TO 表名称 <LOCAL> <OPEN> <WHILE 测试> <FIRST 范围|NEXT 范围> <APPEND> <PRESORT> <SECSORT> <ISOLOCALE 区域设置代码>

参数

名称 描述
PKEY 主键域 | PKEY ALL

主表中的一个或多个键域或表达式。

  • PKEY 主键域使用指定的一个或多个域

    域被按照您列出它们的顺序使用。

  • PKEY ALL 使用该表中的所有域

    域被按照它们出现在表布局中的顺序使用。

EXCLUDE 文件名

可选

仅在使用 PKEY ALL 执行联接时有效。

要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 PKEY ALL。

EXCLUDE 必须紧跟在 PKEY ALL 后面。例如:

PKEY ALL EXCLUDE 域 1 域 2
FIELDS 主域 | FIELDS ALL

要在联接输出表中包括的来自主表的域或表达式。

  • FIELDS 主域 包括指定的一个或多个域

    这些域被按照您列出它们的顺序包括在内。

  • FIELDS ALL 包括该表中的所有域

    这些域被按照它们出现在表布局中的顺序包括在内。

说明

如果您想要将主键域包括在联接表中,则必须明确指定它们。指定 FIELDS ALL 也会包括它们。

EXCLUDE 主域

可选

仅在使用 FIELDS ALL 执行联接时有效。

要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 FIELDS ALL。

EXCLUDE 必须紧跟在 FIELDS ALL 后面。例如:

FIELDS ALL EXCLUDE 域 1 域 2
SKEY 辅助键域 | SKEY ALL

辅助表中的一个或多个键域或表达式。

  • SKEY 辅助键域使用指定的一个或多个域

    域被按照您列出它们的顺序使用。

  • SKEY ALL 使用该表中的所有域

    域被按照它们出现在表布局中的顺序使用。

EXCLUDE 文件名

可选

仅在使用 SKEY ALL 执行联接时有效。

要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 SKEY ALL。

EXCLUDE 必须紧跟在 SKEY ALL 后面。例如:

SKEY ALL EXCLUDE 域 1 域 2

WITH 辅助域 | WITH ALL

可选

要在联接输出表中包括的来自辅助表的域或表达式。

  • WITH 辅助域包括指定的一个或多个域

    这些域被按照您列出它们的顺序包括在内。

  • WITH ALL 包括该表中的所有域

    这些域被按照它们出现在表布局中的顺序包括在内。

说明

如果您想要将辅助键域包括在联接表中,则必须明确指定它们。指定 WITH ALL 也会包括它们。

如果您使用的是 UNMATCHED 联接类型,则不能指定 WITH。

EXCLUDE 文件名

可选

仅在使用 WITH ALL 执行联接时有效。

要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 WITH ALL。

EXCLUDE 必须紧跟在 WITH ALL 后面。例如:

WITH ALL EXCLUDE 域 1 域 2
无关键字 | MANY | UNMATCHED | PRIMARY | SECONDARY | PRIMARY SECONDARY

要执行的联接的类型。

非关键字(省略所有联接类型关键字)

联接的输出表包含: 联接对话框中的相应选项
  • 所有匹配主记录和第一个匹配辅助记录

匹配的主记录和辅助记录

(第一个辅助匹配)

MANY

联接的输出表包含: 联接对话框中的相应选项
  • 所有匹配主记录和所有匹配辅助记录
  • 对于主表和辅助表之间的每个匹配,都有一个记录

匹配的主记录和辅助记录

(所有辅助匹配)

UNMATCHED

联接的输出表包含: 联接对话框中的相应选项
  • 不匹配的主记录

不匹配的主记录

PRIMARY

联接的输出表包含: 联接对话框中的相应选项
  • 所有主记录(匹配的和不匹配的)以及第一个匹配辅助记录

所有主记录和匹配的辅助记录

说明

关键字 BOTH 与指定 PRIMARY 的效果相同。

SECONDARY

联接的输出表包含: 联接对话框中的相应选项
  • 所有辅助记录(匹配的和不匹配的)以及所有匹配主记录

    对于任何重复辅助匹配而言,只有第一个实例被联接到主记录。

所有辅助记录和匹配的主记录

PRIMARY SECONDARY

联接的输出表包含: 联接对话框中的相应选项
  • 所有主记录和所有辅助记录(匹配的和不匹配的)

    对于任何重复辅助匹配而言,只有第一个实例被联接到主记录。

所有主记录和辅助记录

IF 测试

可选

一个条件表达式,它必须为真以便处理每个记录。仅对满足条件的那些记录执行该命令。

说明

在应用任何范围参数(WHILE、FIRST、NEXT)之后,仅针对表中的剩余记录评估 IF 条件。

说明

对于大多数联接类型,IF 条件仅适用于主表。

一个例外是多对多联接,此时,IF 条件还可以引用辅助表。要引用辅助表,您必须指定一个完全限定域名称(表名称.域名称)。例如:

IF Customer.State="NY"
TO 表名

要将命令结果发送到的位置:

  • 表名将结果保存到一个 Analytics 表

    请将表名指定为具有 .FIL 文件扩展名的带引号的字符串。例如:TO "Output.FIL"

    默认情况下,表数据文件 (.FIL) 被保存到包含 Analytics 项目的文件夹。

    请使用绝对或相对文件路径将该数据文件保存到另外的现有文件夹:

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    说明

    表名称被限制为不超过 64 个字母数字字符(不包括 .FIL 扩展名)。该名称可以包括下划线字符 ( _ ),但不能包括其他特殊字符或任何空格。该名称不能以数字开头。

LOCAL

可选

请将输出文件保存在与 Analytics 项目相同的位置。

说明

仅当针对服务器表运行该命令并且输出文件为 Analytics 表时适用。

LOCAL 参数必须紧跟在 TO 参数后面。

OPEN

可选

在命令执行后打开该命令创建的表。仅当该命令创建输出表时有效。

WHILE 测试

可选

一个条件表达式,它必须为真以便处理每个记录。该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。

说明

如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。

FIRST 范围 | NEXT 范围

可选

要处理的记录数:

  • FIRST 从第一个记录开始处理,直到达到指定的记录数为止
  • NEXT 从当前选定的记录开始处理,直到达到指定的记录数为止

请使用范围指定要处理的记录数。

如果您省略 FIRST 和 NEXT,则会默认处理所有记录。

APPEND

可选

将命令输出附加到现有文件的末尾,而不是覆盖现有文件。

说明

您必须确保命令输出的结构和现有文件完全相同:

  • 相同的域
  • 相同的域顺序
  • 匹配的域具有相同的长度
  • 匹配的域具有相同的数据类型

Analytics 将输出附加到现有文件,而无论其结构如何。如果输出的结构和现有文件不匹配,则可能生成混乱的、不完整的或不准确的数据。

PRESORT

可选

在执行该命令之前,请按主键域对主表进行排序。

说明

在 GROUP 命令内部不可使用 PRESORT。

索引而不是排序

也可以为主表生成索引,而不是进行排序。对于大型表而言,索引而不是排序可能缩短联接表所需的时间。

如果您使用索引共同键域联接两个表,请省略 PRESORT 和 SECSORT。

SECSORT

可选

在执行该命令之前,请按辅助键域对辅助表进行排序。

说明

您不能在 GROUP 命令内使用 SECSORT。

索引而不是排序

可对辅助表进行索引而不是排序。对于大型表而言,索引而不是排序可能缩短联接表所需的时间。

如果您使用索引共同键域联接两个表,请省略 PRESORT 和 SECSORT。

ISOLOCALE 区域设置代码

可选

说明

仅在 Unicode 版 Analytics 中可用。

采用语言_国家/地区格式的系统区域设置。例如,要使用加拿大法语,请输入 fr-ca

使用以下代码:

  • 语言 ISO 639 标准语言代码
  • 国家/地区 ISO 3166 标准国家/地区代码

    如果您未指定国家/地区代码,则使用该语言的默认国家/地区。

如果您不使用 ISOLOCALE,则会使用默认系统区域设置。

示例

联接两个表以便发现可能还是供应商的员工

下面的示例使用地址作为公共键域(Address 域和 Vendor_Street 域)联接 Empmast 表和 Vendor 表。

JOIN 命令创建一个包含匹配的主记录和辅助记录的新表,从而生成任何具有相同地址的员工和供应商的列表。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
JOIN PKEY Address FIELDS Empno First Last Address SKEY Vendor_Street WITH Vendor_No Vendor_Name Vendor_Street TO "Employee_Vendor_Match" OPEN PRESORT SECSORT

此版本的 JOIN 命令在联接输出表中包括主表和辅助表中的所有域。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
JOIN PKEY Address FIELDS ALL SKEY Vendor_Street WITH ALL TO "Employee_Vendor_Match" OPEN PRESORT SECSORT

此版本的 JOIN 命令使用一个 IF 条件将联接输出表限制为其地址在 California 内的员工和供应商。

请注意,联接类型为 MANY,如果您希望 IF 条件引用一个辅助表,则这是必需的。该辅助表中的域的名称必须是完全限定的 ( Vendor.Vendor_State)。

OPEN Empmast PRIMARY
OPEN Vendor SECONDARY
JOIN PKEY Address FIELDS ALL SKEY Vendor_Street WITH ALL IF State="CA" AND Vendor.Vendor_State="CA" TO "Employee_Vendor_Match" OPEN PRESORT MANY SECSORT

联接两个表,作为发现不具有匹配客户的应收帐款记录的一种方式

以下示例使用“客户编号”作为公共键域来联接应收账款表和客户表。

JOIN 命令使用 UNMATCHED 联接类型来用不匹配的主记录创建一个新表,从而产生不与任何 Customer 记录关联的 Ar 记录的列表。

OPEN 应收账款 PRIMARY
OPEN 客户 SECONDARY
JOIN PKEY CustNo FIELDS CustNo Due Amount SKEY CustNo UNMATCHED TO "CustomerNotFound.fil" OPEN PRESORT SECSORT

备注

有关此命令工作方式的详细信息,请参见联接表