【发布时间】:2015-02-03 02:59:15
【问题描述】:
我遇到了一些奇怪的行为,这些行为使我无法以我想要的方式设置查询。将不胜感激任何想法。如果有任何有关表格的信息会有所帮助,请告诉我。我浏览了它们,没有任何可能导致这种情况的东西跳出来,但我也不知道我在寻找什么。这是行为。
这很好用:
Select *
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b,
SCHEMA_C.TABLE_C c,
SCHEMA_A.TABLE_D d
Where
b.friend_id = c.friend_id
AND a.group_id = d.group_id
AND b.group_cd = d.group_cd
但这会返回 ORA-00904: b.friend_id = c.friend_id: invalid identifier
Select *
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b,
SCHEMA_A.TABLE_D d
Join
SCHEMA_C.TABLE_C c
On
b.friend_id = c.friend_id
Where
a.group_id = d.group_id
AND b.group_cd = d.group_cd
这将返回 ORA-00904: b.group_cd = d.group_cd: 标识符无效
Select *
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b
Join
SCHEMA_C.TABLE_C c
On
b.friend_id = c.friend_id
Join
SCHEMA_A.TABLE_D d
On
a.group_id = d.group_id
AND b.group_cd = d.group_cd
这又可以了:
Select *
From
SCHEMA_A.TABLE_A a,
SCHEMA_B.TABLE_B b
Join
SCHEMA_C.TABLE_C c
On
b.friend_id = c.friend_id
Join
SCHEMA_A.TABLE_D d
On
b.group_cd = d.group_cd
Where
a.group_id = d.group_id
【问题讨论】:
-
这就是为什么您不应该将旧的 Oracle 类型的连接与适当的 ANSI 连接混合在一起,因为连接顺序和范围变得更加不清晰......坚持一个或另一个,最好是 ANSI * 8-)