【发布时间】:2010-11-15 08:46:00
【问题描述】:
我正在使用 Oracle ANSI 左外连接语法执行以下查询,它返回 107 条记录:
SELECT bs_accts.acct_num,
bs_accts.acct_name,
br_data.record_id ,
as_users.username,
br_fx.fx_rate ,
FROM bs_accts
CROSS JOIN as_users
CROSS JOIN br_fx
left outer join br_data
ON (as_users.userid = br_data.last_note_user AND br_fx.iso_src = br_data.user_ten)
WHERE br_data.state=3
AND (br_data.acct_id = bs_accts.acct_id)
AND (bs_accts.acct_currency='SHS')
AND substr(bs_accts.acct_num,1,1)='T'
AND br_fx.iso_dst = 'USD';
当我在没有 ANSI 语法的情况下执行相同的查询时,它返回 875 条记录。我想要 875 条带有 ANSI 代码的记录。下面是较旧的左外连接语法:
SELECT bs_accts.acct_num,
bs_accts.acct_name,
br_data.record_id ,
as_users.username,
br_fx.fx_rate ,
FROM bs_accts,as_users,br_fx,br_data
WHERE br_data.state=3
AND (br_data.acct_id = bs_accts.acct_id)
AND (bs_accts.acct_currency='SHS')
AND substr(bs_accts.acct_num,1,1)='T'
AND br_data.last_note_user=as_users.userid(+)
AND br_data.user_ten = br_fx.iso_src(+)
AND br_fx.iso_dst = 'USD';
上面的ANSI代码有问题吗??
【问题讨论】: