PL/SQL的问题

windofsun 2004-07-29 07:48:13
问题见下面的帖子。解决以后两个帖子一起结。多谢各位大侠!

http://community.csdn.net/Expert/topic/3214/3214295.xml?temp=.9033319


如果用PL/SQL要用WHERE (+) 才正确,那么下面的T-SQL对应的PL/SQL应该如何写呢?

SELECT *
FROM
A LEFT JOIN B ON A.ID=B.A_ID
LEFT JOIN C ON A.ID=C.A_ID
LEFT JOIN D ON B.ID=D.B_ID
WHERE A.ID='001'
...全文
200 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baojianjun 2004-07-30
  • 打赏
  • 举报
回复
大家說的對,我來湊熱鬧
dinya2003 2004-07-30
  • 打赏
  • 举报
回复
inner join on id=id : where id=id
left join on id=id : where id=id(+)
right join on id=id : where id(+)=id
WilliamXiaoLiang 2004-07-29
  • 打赏
  • 举报
回复
大家说得很清楚了,我来做个总结:
tsql中的join on在9i中的实施分为两步
1、“联结”条件用on 、、、
2、记录集过滤用where 、、、
顶一下!
QQ:390958177
Email:xiaol@chinaebiz.biz
txlicenhe 2004-07-29
  • 打赏
  • 举报
回复
上面简单测试证明如下两个语句执行效果一样:

select * from a,b,c,d
where a.id = b.a_id(+)
and a.id = c.a_id(+)
and b.id = d.b_id(+)
and a.id = 1;


SELECT *
FROM
A LEFT JOIN B ON A.ID=B.A_ID
LEFT JOIN C ON A.ID=C.A_ID
LEFT JOIN D ON B.ID=D.B_ID
where a.id = 1;
txlicenhe 2004-07-29
  • 打赏
  • 举报
回复
--测试:
create table A(id number, a1 number);
create table B(a_id number,id number,b1 number);
create table c(a_id number,c1 number);
create table d(b_id number,d1 number);

insert into a values(1,10);
insert into a values(2,10);
insert into a values(3,10);
insert into b values(1,1,21);
insert into b values(1,2,22);
insert into b values(2,3,23);
insert into c values(2,31);
insert into d values(2,42);


select * from a,b,c,d
where a.id = b.a_id(+)
and a.id = c.a_id(+)
and b.id = d.b_id(+)
and a.id = 1;


SELECT *
FROM
A LEFT JOIN B ON A.ID=B.A_ID
LEFT JOIN C ON A.ID=C.A_ID
LEFT JOIN D ON B.ID=D.B_ID
where a.id = 1;

/*

ID A1 A_ID ID B1 A_ID C1 B_ID D1
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 10 1 1 21
1 10 1 2 22 2 42

已选择2行。


ID A1 A_ID ID B1 A_ID C1 B_ID D1
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1 10 1 2 22 2 42
1 10 1 1 21

已选择2行。
*/
txlicenhe 2004-07-29
  • 打赏
  • 举报
回复
是不是这样啊?没试过呃。
where a.id = b.a_id(+)
and a.id = c.a_id(+)
and b.id = d.b_id(+)
and a.id = '001'

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧