如何使用ANSI sql外连接表

时间:2017-06-13 16:53:52

标签: sql oracle

我正在制作2张桌子。一个包含匹配我的过滤条件的657行,另一个包含193个记录。

我使用Oracle" AFAIK"成功加入了他们。语法:

select
  ecp.portfolio_acct, ecp.posn_id cost_posn_id, ecp.asset_id 
from MID_COST_POSITION ecp, MID_CASH_POSITION cas
where ecp.portfolio_acct = 10183306
  and ecp.portfolio_acct = cas.portfolio_acct(+)
  and ecp.asset_id       = cas.asset_id(+)
;

但是,我似乎无法使用ANSI-SQL(或ISO-sql)复制这些结果:

select
  ecp.portfolio_acct, ecp.posn_id cost_posn_id, ecp.asset_id 
from MID_COST_POSITION ecp
LEFT OUTER JOIN MID_CASH_POSITION cas
  on ecp.portfolio_acct = cas.portfolio_acct
where ecp.asset_id      = cas.asset_id
  and ecp.portfolio_acct = 10183306 
;

我尝试了各种JOIN但没有成功。在第一个例子中,我不得不在外部加入2个单独的字段,我不知道如何使用ANSI-SQL完成。

我感谢任何人都能提供的任何指导。谢谢!

1 个答案:

答案 0 :(得分:3)

select
  ecp.portfolio_acct, ecp.posn_id cost_posn_id, ecp.asset_id 
from MID_COST_POSITION ecp
LEFT OUTER JOIN MID_CASH_POSITION cas
  on ecp.portfolio_acct = cas.portfolio_acct
and ecp.asset_id      = cas.asset_id
Where ecp.portfolio_acct = 10183306 
;

您将此转换为内部联接,其中包含以下条件,因为它现在必须满足结果集中的条件:

ecp.asset_id      = cas.asset_id