关于SQL的几个问题,在线等~~~~

let5flying 2006-12-13 10:39:49
最近遇到几个SQL问题,解决不了。请大家帮忙啊

1。left join和在where 里面写(+)的方式是不是有区别?区别在哪儿?
现在遇到的问题是用left join的写法可以解决,但是(+)不知道怎么解决
实现一:
select
A.a,
B.b,
C.c,
C.d
from A
left join B on
A.a = B.b
left join C on
A.a = C.c and
B.b = C.d
where
A.a = '001'

实现二
select
A.a,
B.b,
C.c,
C.d
from A,B,C
where
A.a = '001' and
A.a = B.b(+) and
A.a = C.c(+) and
B.b = C.d(+)
这样会提示错误,请问用(+)的方式怎么写才能没有错误结果和实现一的一样?

2。两个表A,B关联的时候,如果A里面的字段没有和B的关联上,那么用一个定值
和B关联,怎么实现好?现在的处理是
A.a,
DECODE(B1.b,NULL,B2.b,B1.b)
from A
left join B B1 on
A.a = B1.b
left join B B2 on
B2.b = '001'
where
0 = 0

当然实际的SQL要比这复杂的多,关联的条件很多。所以最好是有别的处理方法。


3。谁有好的实用的SQL语法提供一下啊,不是随便在网上找的那种
最好是简单易懂并且全面的资料。

如果问题解决了,可以另开帖送分~~ 大家帮忙啊!!!!

...全文
201 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
let5flying 2007-03-03
  • 打赏
  • 举报
回复
没有结果。。。结贴了~
let5flying 2006-12-14
  • 打赏
  • 举报
回复
再顶顶~~~~~~
let5flying 2006-12-14
  • 打赏
  • 举报
回复
没有错,但是和想要的结果不一样了啊
这样的话b和c是直接连接了,出来的结果少了
bzszp 2006-12-14
  • 打赏
  • 举报
回复
这个才跟 实现一 等价
bzszp 2006-12-14
  • 打赏
  • 举报
回复
select
A.a,
B.b,
C.c,
C.d
from A,B,C
where
A.a = '001' and
A.a = B.b(+) and
A.a = C.c(+) and
B.b = C.d
这样有错么?
kingkingkingking 2006-12-14
  • 打赏
  • 举报
回复
只能对一个表 (+)
let5flying 2006-12-14
  • 打赏
  • 举报
回复
问题1的实现2有错误,错误是1个表不能和1个以上的表left~~~~~~~
其他的没有错误。
bzszp 2006-12-14
  • 打赏
  • 举报
回复
什么错误信息?
let5flying 2006-12-13
  • 打赏
  • 举报
回复
to: wiler(@_@)
可以写得完全一点嘛? 不太明白
如果写成B2.b(+) = '001' 不是和left join重复了么?
let5flying 2006-12-13
  • 打赏
  • 举报
回复
顶啊~
wiler 2006-12-13
  • 打赏
  • 举报
回复
1....
2.B2.b = '001'可改为 B2.b(+) = '001'

17,377

社区成员

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

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