DEFINE RELATION 命令

概念信息

关联表

定义两个 Analytics 表之间的关系。

说明

您可以关联多达 18 个 Analytics 表,并且访问和解析关联表中任何域组合中的数据,就如同它们位于单个表中一样。对于每对关联表,您都必须指定单独的 DEFINE RELATION 命令。

语法

DEFINE RELATION 键域 WITH 相关表名称 INDEX 索引名 <AS 关系名称>

参数

名称 描述
键域

父表中的键域。

只能为每个关系选择一个键域。

说明

在父表和孙子表之间创建关联时,您必须以格式表名称.域名称指定完全限定键域名称。

关联三个表中,参见:Vouchers.created_by

WITH 相关表名称

关联表的名称。

INDEX 索引名

关联表中键域的索引的名称。

您必须首先按键域对关联表进行索引,然后才能关联该表。

AS 关系名称

可选

该关系的唯一名称。

默认情况下,使用子表的名称作为关系名称。如果您要定义到同一子表的附加关系,则必须指定唯一的名称。

示例

关联两个表

下面的示例通过使用客户编号域 (CustNum) 作为键域,将打开的表关联到 Customer 表:

DEFINE RELATION CustNum WITH Customer INDEX Customer_on_CustNum

Customer_on_CustNum 是键域上的子表索引的名称。当您关联表时,需要子表索引。

如果当您运行 DEFINE RELATION 命令时子表索引尚不存在,则会显示错误消息并且不会执行关联。

提示

如果您在 Analytics 用户界面中定义一个关系,则自动为您创建子表索引。

在关联两个表之前创建子表索引

如果需要,您可以在关联两个表之前创建子表索引。下面的示例显示如何在将 Ar 表关联到 Customer 表之前为 Customer 子表创建索引。

OPEN Customer
INDEX ON CustNum TO Customer_on_CustNum
Open Ar
DEFINE RELATION CustNum WITH Customer INDEX Customer_on_CustNum

关联三个表

下面的示例关联 ACL_Rockwood.ACL 样例项目中的三个表:

  • Vouchers_items 父表
  • Vouchers 子表
  • Employees 孙子表

通过使用 Vouchers 表作为关系中的中间表,您可以将每个凭证条目与处理该条目的员工相关联。

OPEN Vouchers
INDEX ON voucher_number TO "Vouchers_on_voucher_number"
OPEN Vouchers_items
DEFINE RELATION voucher_number WITH Vouchers INDEX Vouchers_on_voucher_number
OPEN Employees
INDEX ON employee_number TO "Employees_on_employee_number"
OPEN Vouchers_items
DEFINE RELATION Vouchers.created_by WITH Employees INDEX Employees_on_employee_number

语法逻辑解释

  1. 打开 Vouchers 表并按 voucher_number 域对其进行索引。
  2. 打开 Vouchers_items 表并使用 voucher_number 作为键域将其与 Vouchers 表相关联。
  3. 打开 Employees 表并按 employee_number 域对其进行索引。
  4. 打开 Vouchers_items 表并使用 Vouchers.created_by 作为键域将其与 Employees 表相关联。

    说明

    Vouchers.created_by 可在第二个关系中用作键域,因为您已经在第一个关系中将 Vouchers_itemsVouchers 相关联。

备注

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