Oracle:列模糊定义

And*_*min 4 oracle join defined

我知道有很多像这样的问题,但我的问题不是如何摆脱这个错误,而是要知道这在第9版Oracle中是如何工作的.

我有一个用Ruby和Oracle DB编写的旧资源,最近升级到版本= 11.

我无法在Oracle DB中编辑数据,只能读取.所以有两个表可以说:表A(id,名称,类型,客户)和表B(id,a_id,类型,人)

所以.源代码中有一个查询:

select a.id,b.id from a join b on a.id = b.a_id where type = 'A'
Run Code Online (Sandbox Code Playgroud)

所以在Oracle 9中这种方法很完美,但现在我的"列模糊定义"错误了.

我想知道的是:

where type = 'A'
Run Code Online (Sandbox Code Playgroud)

是相同的

where a.type = 'A' AND b.type = 'A'
Run Code Online (Sandbox Code Playgroud)

要么

where a.type = 'A' OR b.type = 'A'
Run Code Online (Sandbox Code Playgroud)

Ton*_*ews 5

不,那就是问题:这可能意味着

where a.type = 'A'
Run Code Online (Sandbox Code Playgroud)

或者它可能意味着

where b.type = 'A'
Run Code Online (Sandbox Code Playgroud)

结果可能不同; 因此错误说它是含糊不清的.


Gar*_*ers 5

我认为这是ANSI样式连接的一个错误.使用DBMS_XPLAN查找旧数据库中正在筛选的表.

或者更好的是,从业务逻辑中解决他们应该查询的问题.