Collection Contents 上一页 下一页 PDF

ASA SQL 用户指南

连接:从多个表检索数据

键连接

描述键连接的操作的规则


以下规则总结前面提供的信息。

规则 1:两个表的键连接 

此规则适用于 A KEY JOIN B,其中 A 和 B 是基表或临时表。

  1. 从 A 中查找所有引用 B 的外键。

    如果存在其角色名是表 B 的相关名的外键,则将它标记为首选外键。

  2. 从 B 中查找所有引用 A 的外键。

    如果存在其角色名是表 A 的相关名的外键,则将它标记为首选外键。

  3. 如果有多个首选键,则连接是不明确的。发出语法错误 SQLE_AMBIGUOUS_JOIN (-147)

  4. 如果有单个首选键,则选择此外键为此 KEY JOIN 表达式定义生成的连接条件。

  5. 如果没有首选键,则使用 A 和 B 间的其它外键:

规则 2:不包含逗号的表的表达式的键连接 

此规则适用于 A KEY JOIN B,其中 A 和 B 是不包含逗号的表的表达式。

  1. 对于每对表(来自表达式 A 的一个表和来自表达式 B 的一个表),列出所有外键,并且标记各表间的所有首选外键。用于确定首选外键的规则在前面的规则 1 中提供。

  2. 如果有多个首选键,则连接是不明确的。发出语法错误 SQLE_AMBIGUOUS_JOIN (-147)。

  3. 如果有单个首选键,则选择此外键为此 KEY JOIN 表达式定义生成的连接条件。

  4. 如果没有首选键,则使用表对间的其它外键:

规则 3:表的表达式列表的键连接 

此规则适用于 (A1, A2, ...)KEY JOIN ( B1, B2, ...),其中的 A1、B1 等等都是不包含逗号的表的表达式。

  1. 对于每一对表的表达式 Ai 和 Bj,通过应用规则 1 或规则 2 为该表的表达式 (Ai KEY JOIN Bj) 找到唯一生成的连接条件。如果按规则 1 或规则 2 用于一对表的表达式的任何 KEY JOIN 是不明确的,则生成语法错误。

  2. 用于此 KEY JOIN 表达式的生成的连接条件是在第 1 步中找到的连接条件的联合。

规则 4:表的表达式列表和不包含逗号的表的表达式的键连接 

此规则适用于 (A1, A2, ...)KEY JOIN ( B1, B2, ...),其中的 A1、B1 等等都是可以包含逗号的表的表达式。

  1. 对于每一对表的表达式 Ai 和 Bj,通过应用规则 1、规则 2 或规则 3 为表的表达式 (Ai KEY JOIN Bj) 找到唯一生成的连接条件。如果按规则 1、规则 2 或规则 3 用于一对表的表达式的任何 KEY JOIN 是不明确的,则生成一个语法错误。

  2. 用于此 KEY JOIN 表达式的生成的连接条件是在第 1 步中找到的连接条件的联合。


Collection Contents 上一页 下一页 PDF