当前位置: 代码迷 >> Oracle技术 >> 关于四表的查询解决方案
  详细解决方案

关于四表的查询解决方案

热度:360   发布时间:2016-04-24 08:05:52.0
关于四表的查询
表名:ACCOUNT_INFO
字段:ID,BANKID,CARDNO

表名:BANK_INFO
字段:ID,BANKNAME

表名:TYPE_BANK
字段:ID,BANKACCOUNTID,FUNDSTYPEID

表名;FUNDS_TYPE
字段:ID,FUNDSTYPECODE,REMARK

现四个表,以ACCOUNT_INFO表为主表,通过ACCOUNT_INFO的BANKID去匹配BANK_INFO表的ID,再拿ACCOUNT_INFO的ID去匹配TYPE_BANK的BANKACCOUNTID,取到FUNDSTYPEID的值,然后再去FUNDS_TYPE表匹配FUNDSTYPECODE
求超级SQL大神,这种查询应该用哪种连接查询 ?求SQL大神!!
------解决思路----------------------
select a.ID,
       a.BANKID,
       a.CARDNO,
       b.BANKNAME,
       c.BANKACCOUNTID,
       c.FUNDSTYPEID,
       d.FUNDSTYPECODE,
       d.REMARK
  from ACCOUNT_INFO a, BANK_INFO b, TYPE_BANK c, FUNDS_TYPE d
 where a.BANKID = b.ID(+)
   and a.ID = c.BANKACCOUNTID(+)
   and c.FUNDSTYPEID = d.FUNDSTYPECODE

------解决思路----------------------

引用:
他这个用的是什么连接查询?


a.BANKID = b.ID(+)    A表的数据全部检索,也就是你说的以A表为主表。

------解决思路----------------------
左右连接。您以ACCOUNT_INFO表为主表,那必须取出该表的完整数据,所以用到了(+)。(+)跟哪就取出对面的全部。
------解决思路----------------------
引用:
Quote: 引用:

他这个用的是什么连接查询?


a.BANKID = b.ID(+)    A表的数据全部检索,也就是你说的以A表为主表。

就是和left join 和right join一样,oracle高版本之后就是用(+)了,你写left join oracle还是会解析成(+)的
  相关解决方案