表名: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表为主表,那必须取出该表的完整数据,所以用到了(+)。(+)跟哪就取出对面的全部。
------解决思路----------------------
就是和left join 和right join一样,oracle高版本之后就是用(+)了,你写left join oracle还是会解析成(+)的