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 |
主表中的一个或多个键域或表达式。
|
||||||||||||||||||||||||
EXCLUDE 文件名 可选 |
仅在使用 PKEY ALL 执行联接时有效。 要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 PKEY ALL。 EXCLUDE 必须紧跟在 PKEY ALL 后面。例如: PKEY ALL EXCLUDE 域 1 域 2 |
||||||||||||||||||||||||
FIELDS 主域 | FIELDS ALL |
要在联接输出表中包括的来自主表的域或表达式。
说明 如果您想要将主键域包括在联接表中,则必须明确指定它们。指定 FIELDS ALL 也会包括它们。 |
||||||||||||||||||||||||
EXCLUDE 主域 可选 |
仅在使用 FIELDS ALL 执行联接时有效。 要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 FIELDS ALL。 EXCLUDE 必须紧跟在 FIELDS ALL 后面。例如: FIELDS ALL EXCLUDE 域 1 域 2 |
||||||||||||||||||||||||
SKEY 辅助键域 | SKEY ALL |
辅助表中的一个或多个键域或表达式。
|
||||||||||||||||||||||||
EXCLUDE 文件名 可选 |
仅在使用 SKEY ALL 执行联接时有效。 要从该命令中排除的一个或多个域。EXCLUDE 使您可以通过排除指定的域优化 SKEY ALL。 EXCLUDE 必须紧跟在 SKEY ALL 后面。例如: SKEY ALL EXCLUDE 域 1 域 2 |
||||||||||||||||||||||||
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 表名 |
要将命令结果发送到的位置:
|
||||||||||||||||||||||||
LOCAL 可选 |
请将输出文件保存在与 Analytics 项目相同的位置。 说明 仅当针对服务器表运行该命令并且输出文件为 Analytics 表时适用。 LOCAL 参数必须紧跟在 TO 参数后面。 |
||||||||||||||||||||||||
OPEN 可选 |
在命令执行后打开该命令创建的表。仅当该命令创建输出表时有效。 |
||||||||||||||||||||||||
WHILE 测试 可选 |
一个条件表达式,它必须为真以便处理每个记录。该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。 说明 如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。 |
||||||||||||||||||||||||
FIRST 范围 | NEXT 范围 可选 |
要处理的记录数:
请使用范围指定要处理的记录数。 如果您省略 FIRST 和 NEXT,则会默认处理所有记录。 |
||||||||||||||||||||||||
APPEND 可选 |
将命令输出附加到现有文件的末尾,而不是覆盖现有文件。 说明 您必须确保命令输出的结构和现有文件完全相同:
Analytics 将输出附加到现有文件,而无论其结构如何。如果输出的结构和现有文件不匹配,则可能生成混乱的、不完整的或不准确的数据。 |
||||||||||||||||||||||||
PRESORT 可选 |
在执行该命令之前,请按主键域对主表进行排序。 说明 在 GROUP 命令内部不可使用 PRESORT。 索引而不是排序也可以为主表生成索引,而不是进行排序。对于大型表而言,索引而不是排序可能缩短联接表所需的时间。 如果您使用索引共同键域联接两个表,请省略 PRESORT 和 SECSORT。 |
||||||||||||||||||||||||
SECSORT 可选 |
在执行该命令之前,请按辅助键域对辅助表进行排序。 说明 您不能在 GROUP 命令内使用 SECSORT。 索引而不是排序可对辅助表进行索引而不是排序。对于大型表而言,索引而不是排序可能缩短联接表所需的时间。 如果您使用索引共同键域联接两个表,请省略 PRESORT 和 SECSORT。 |
||||||||||||||||||||||||
ISOLOCALE 区域设置代码 可选 |
说明 仅在 Unicode 版 Analytics 中可用。 采用语言_国家/地区格式的系统区域设置。例如,要使用加拿大法语,请输入 fr-ca。 使用以下代码:
如果您不使用 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
备注
有关此命令工作方式的详细信息,请参见联接表。