oracle 左连接和右连接问题,请帮小菜一下啊,搞清不为什么!!

guishuanglin 2006-03-09 08:12:24
1---------------------------------
SELECT * FROM JB_STOCK A,
JB_HISBASE C
WHERE
A.F_ID = C.F_ID(+)
AND A.F_ID = '000001'
AND C.F_DATE(+)>=(TO_DATE('20051231','YYYYMMDD')) AND C.F_DATE(+) <= TO_DATE('20051231','YYYYMMDD')
上面为什么是左连接??
C.F_DATE(+)>=(TO_DATE('20051231','YYYYMMDD'))为什么(+)不能放右边?不能放右边什么是左连接??搞不清
2------------------------------
SELECT * FROM JB_STOCK A LEFT OUTER JOIN JB_HISBASE C
ON A.F_ID = C.F_ID AND
C.F_DATE>=(TO_DATE('20051231','YYYYMMDD')) AND
C.F_DATE <= TO_DATE('20051231','YYYYMMDD') AND
A.F_ID =('000001')
为什么这样写没有用?语法没错,但是A.F_ID =('000001')没用起作用!!晕
3-----------------------------
SELECT * FROM JB_STOCK A LEFT OUTER JOIN JB_HISBASE C
ON A.F_ID = C.F_ID AND
C.F_DATE>=(TO_DATE('20051231','YYYYMMDD')) AND
C.F_DATE <= TO_DATE('20051231','YYYYMMDD')
WHERE A.F_ID IN('000001')
为什么可以?
----------------
我主要想问第一个问题,为什么(+)不能放右边,却叫左连接?
能不能请清楚一点,这个我菜。
...全文
1192 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
guishuanglin 2006-03-10
  • 打赏
  • 举报
回复
搞清楚了,
cenlmmx(学海无涯苦作舟) ( ) 说的差不多,
还是建议用inner/left/right join说的也是好,尽量用。
guishuanglin 2006-03-10
  • 打赏
  • 举报
回复
letsflytogether(恨!不能拥有天下所有的财富,然后平分)
我知道你说的,但是我是自动拼的sql,用inner/left/right join很难拼。
还不如用where
chentony 2006-03-10
  • 打赏
  • 举报
回复
一般在二個字段相連接的時候,有一方會出現NULL。為了使主表的數據全部選擇出來,會使用左/右連接
伍子V5 2006-03-10
  • 打赏
  • 举报
回复
其实如果oracle在9i以上
还是建议用inner/left/right join
因为那才是标准的sql
guishuanglin 2006-03-09
  • 打赏
  • 举报
回复
楼上的说法,正确,学习中,
刚才一个高手也对我说:与(+)在一起的就是[被连接]的表,
cenlmmx 2006-03-09
  • 打赏
  • 举报
回复
左连接:select a_f2,b_f2 from A,B where A.f1=B.f1(+),必须首先扫描A表以驱动B扫描。此时,A标示的地方,如果针对A表的一条记录,在B表中1条也没有找到符合条件的记录,则会把A.f1值和以NULL值作为B.f1的值返回给用户;这样,A表中的所有记录的且在select列表中的信息都会返回给用户,标准SQL语法是left outer join
左连接常量是不能的.
其实 A.F_ID = '000001'和A.F_ID(+) = '000001'是一个意思,因为右边只有一个值000001
guishuanglin 2006-03-09
  • 打赏
  • 举报
回复
再问:第一个问题中
AND A.F_ID = '000001'
为什么也可以写成
A.F_ID(+) = '000001'
倒底什么条件才能用(+)啊??那些时候不用啊?

17,377

社区成员

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

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