没有内连接或连接关键字的SQL语法

时间:2018-03-21 18:41:29

标签: sql oracle oracle11g

我想在没有内连接关键字的情况下使用此查询

select 
    MAIN_ACCOUNTS.MAIN_ID, sum(voucher.AMOUNT_US) "Total Amount"
from 
    MAIN_ACCOUNTS 
inner join 
    SUB_ACCOUNTS on MAIN_ACCOUNTS.MAIN_ID = SUB_ACCOUNTS.MAIN_ID
inner join 
    Voucher on SUB_ACCOUNTS.SUB_ID = Voucher.credit_ACCOUNT_ID
group by 
    MAIN_ACCOUNTS.MAIN_ID ;

1 个答案:

答案 0 :(得分:3)

那将是

select ma.main_id, sum(v.amount_us) 
from main_accounts ma, sub_accounts sa, voucher v
where sa.main_id = ma.main_id
  and v.credit_account_id = sa.sub_id
group by ma.main_id;

信不信由你,但是ANSI连接会导致某些(较旧的)Oracle软件产品出现问题,例如Reports Developer 10g(9.0.4) - 而不是它不起作用,Reports崩溃了。所以 - 有时候你注定要使用它。

另一方面,是的 - 较旧的人可能需要一些时间来适应“新”语法(对,;从确切时间开始可用吗?1990年代?) 。

我看到了两个主要优点:

  • 代码(真的)更容易阅读 - 加入这里,条件那里
  • 外连接,使用“旧的”Oracle语法&它的(+)运算符使得无法将一个表外连接到多于另一个表

所以,在我看来,你(OP)应该尽可能使用ANSI连接。