欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

与多表left join等价的where语句,自己用(+)写了个但不太对

更新时间: 2014-01-05 02:14:00 责任编辑: Author_N1

 

求一个与多表left join等价的where语句,自己用(+)写了个但不太对
请教大家,与下面left join等价的where语句:

select X.sfzmhm
from X left join A
on X.sfzmhm = A.sfzmhm
left join B
on X.sfzmhm = B.sfzmhm and B.id>=1
left join C
on C.sfzmhm = X.sfzmhm
left join D
on D.sfzmhm = X.sfzmhm and D.hm=B.id
left join E
on A.mc = E.bh
left join F
on F.sn=C.sn and F.lx=B.id

用(+)代替:
select X.sfzmhm
from X left join A
on X.sfzmhm = A.sfzmhm(+)
left join B
on X.sfzmhm = B.sfzmhm(+) and B.id(+)>=1
left join C
on C.sfzmhm = X.sfzmhm(+)
left join D
on D.sfzmhm = X.sfzmhm(+) and D.hm=B.id(+)
left join E
on A.mc = E.bh
left join F
on F.sn=C.sn and F.lx=B.id

--参考方法--
引用:
你必须把几个表的层次弄清楚,先连那个表再连那个表,搞清楚先后顺序后你可以通过嵌套的方式进行连接,而且code也容易看懂:
比如:
select * from c,(select * from a,b where a.id=b.id)t1 where c.id=t1.id(+);
这样你一看就会很清楚执行顺序


+1,①多张表时建议用子查询,SQL结构会清晰很多。
    ②用(+)代替left outer join时要在每个关联字段都加上(+)标志否则当有NULL值时很容易产生错误数据。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:14:00
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7284/
本文WWW.DOC100.NET DOC100.NET版权所有。