以下规则总结前面提供的信息。
此规则适用于 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 步中找到的连接条件的联合。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |