以下规则总结前面提供的信息。
此规则适用于 A KEY JOIN B,其中 A 和 B 是基表或临时表。
从 A 中查找所有引用 B 的外键。
如果存在其角色名是表 B 的相关名的外键,则将它标记为首选外键。
从 B 中查找所有引用 A 的外键。
如果存在其角色名是表 A 的相关名的外键,则将它标记为首选外键。
如果有多个首选键,则连接是不明确的。发出语法错误 SQLE_AMBIGUOUS_JOIN (-147)。
如果有单个首选键,则选择此外键为此 KEY JOIN 表达式定义生成的连接条件。
如果没有首选键,则使用 A 和 B 间的其它外键:
如果在 A 和 B 间有多个外键,则连接是不明确的。发出语法错误 SQLE_AMBIGUOUS_JOIN (-147)。
如果有单个外键,则选择此外键为此 KEY JOIN 表达式定义生成的连接条件。
如果没有任何外键,则该连接是无效的,将生成错误。
此规则适用于 A KEY JOIN B,其中 A 和 B 是不包含逗号的表的表达式。
对于每对表(来自表达式 A 的一个表和来自表达式 B 的一个表),列出所有外键,并且标记各表间的所有首选外键。用于确定首选外键的规则在前面的规则 1 中提供。
如果有多个首选键,则连接是不明确的。发出语法错误 SQLE_AMBIGUOUS_JOIN (-147)。
如果有单个首选键,则选择此外键为此 KEY JOIN 表达式定义生成的连接条件。
如果没有首选键,则使用表对间的其它外键:
如果有多个外键,则该连接是不明确的。发出语法错误 SQLE_AMBIGUOUS_JOIN (-147)。
如果有单个外键,则选择此外键为此 KEY JOIN 表达式定义生成的连接条件。
如果没有任何外键,则该连接是无效的,将生成错误。
此规则适用于 (A1, A2, ...)KEY JOIN ( B1, B2, ...),其中的 A1、B1 等等都是不包含逗号的表的表达式。
对于每一对表的表达式 Ai 和 Bj,通过应用规则 1 或规则 2 为该表的表达式 (Ai KEY JOIN Bj) 找到唯一生成的连接条件。如果按规则 1 或规则 2 用于一对表的表达式的任何 KEY JOIN 是不明确的,则生成语法错误。
用于此 KEY JOIN 表达式的生成的连接条件是在第 1 步中找到的连接条件的联合。
此规则适用于 (A1, A2, ...)KEY JOIN ( B1, B2, ...),其中的 A1、B1 等等都是可以包含逗号的表的表达式。
对于每一对表的表达式 Ai 和 Bj,通过应用规则 1、规则 2 或规则 3 为表的表达式 (Ai KEY JOIN Bj) 找到唯一生成的连接条件。如果按规则 1、规则 2 或规则 3 用于一对表的表达式的任何 KEY JOIN 是不明确的,则生成一个语法错误。
用于此 KEY JOIN 表达式的生成的连接条件是在第 1 步中找到的连接条件的联合。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。