求教 oracle查询中

wlyve 2013-08-29 09:53:32
where a.vip_no(+) = b.vip_no
and b.vip_no = c.vip_no
and a.cons_time(+) between '20130101000000' and '20130822235959' --
and b.issu_time < '20130228000000'
and b.curr_valid_date>= '20130823'
and a.cancel_flag(+) ='0'



(+)表示什么意思 看不懂啊。。
...全文
491 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoxuelingshuang 2015-01-26
  • 打赏
  • 举报
回复
是外连接的一种表示方式。此处使用的是左外连接
现在 2013-09-18
  • 打赏
  • 举报
回复
温故而知新!
北极海hein 2013-09-17
  • 打赏
  • 举报
回复
相当于左连接。left join http://item.taobao.com/item.htm?spm=686.1000925.1000774.36.OGsWSi&id=27406928729
风之隐 2013-09-10
  • 打赏
  • 举报
回复
给个例子,容易理解点,引用别人的实例: [TEST@ORA1] SQL>select * from alink; 编号 姓名---- ---------- 1000 张三 2000 李四 3000 王五 [TEST@ORA1] SQL>select * from blink; 编号 商品---- ---------- 1000 电视机 2000 录像机 4000 自行车 [TEST@ORA1] SQL>set null 空值--这里为了显示方面我把NULL定义成了[空值] [TEST@ORA1] SQL>select a.*,b.* from alink inner join blink on a.编号=b.编号;--内链接 编号 姓名 编号 商品 1000 张三 1000 电视机 2000 李四 2000 录像机 [TEST@ORA1] SQL>select a.*,b.* from alink left join blink on a.编号=b.编号;---左链接 --相当于select a.*,b.* from alink,blink where a.编号=b.编号(+) 编号 姓名 编号 商品---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 [TEST@ORA1] SQL>select a.*,b.* from alink right join blink on a.编号=b.编号;--右链接 --相当于select a.*,b.* from alink,blink where a.编号(+)=b.编号 编号 姓名 编号 商品---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 空值 空值 4000 自行车 [TEST@ORA1] SQL>select a.*,b.* from alink full join blink on a.编号=b.编号;--全链接 编号 姓名 编号 商品---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 空值 空值 4000 自行车---以上,希望对你有所帮助。提问者评价明白点了, 谢谢
幸福的小木鱼 2013-09-09
  • 打赏
  • 举报
回复
好好看一下内连接,外连接的知识这个就懂了
常语 2013-09-09
  • 打赏
  • 举报
回复
右外连接 right outer join 或者 right join 右外连接是在等值连接的基础上加上被连接表的不匹配数据 SELECT * FROM TESTA RIGHT OUTER JOIN TESTB ON TESTA.A=TESTB.A Oracle支持的另一种写法 SELECT * FROM TESTA,TESTB WHERE TESTA.A(+)=TESTB.A
delete906 2013-09-06
  • 打赏
  • 举报
回复
是左外连接呀
tumblewind 2013-09-06
  • 打赏
  • 举报
回复
看看这张图片,这是ORACLE 11G的官方原文教材:





举个很简单的例子,A.COL1=B.COL1(+)表示:不管B表里的COL1字段有没有空行,A表里面的COL1总是会全部显示。
zhaolushuan 2013-08-30
  • 打赏
  • 举报
回复
就是做外连接的 在哪侧那个就是主表
请叫我-雷人 2013-08-30
  • 打赏
  • 举报
回复
我也一直没理解,只是模模糊糊的知道点。共同学习
wlyve 2013-08-29
  • 打赏
  • 举报
回复
能具体说说这个语句的意思 么 cons_time 消费时间 a表是消费明细表 ISSU_TIME 发卡时间 b表是卡主表 CURR_VALID_DATE 当前有效期 CANCEL_FLAG 取消标志
  • 打赏
  • 举报
回复
"(+)"所在位置的另一侧为连接的方向,右连接说明 等号右侧的所有 记录均会被显示,无论其在左侧是否得到匹配
wlyve 2013-08-29
  • 打赏
  • 举报
回复
引用 1 楼 gingerkang 的回复:
left join
是什么意思 是首先取出a表中所有数据,然后再加上与a,b匹配的的数据么?
  • 打赏
  • 举报
回复
外连接
gingerkang 2013-08-29
  • 打赏
  • 举报
回复
left join
善若止水 2013-08-29
  • 打赏
  • 举报
回复
and a.cancel_flag(+) ='0' 表示 and a.cancel_flag为0的取出来置为0,不为0的也取出来置为空。这是左外连接的最通俗的理解。
youqi1984 2013-08-29
  • 打赏
  • 举报
回复
Oracle 特有表之间外连接方法。
pobaby 2013-08-29
  • 打赏
  • 举报
回复
引用 楼主 wanli213 的回复:
where a.vip_no(+) = b.vip_no and b.vip_no = c.vip_no and a.cons_time(+) between '20130101000000' and '20130822235959' -- and b.issu_time < '20130228000000' and b.curr_valid_date>= '20130823' and a.cancel_flag(+) ='0' (+)表示什么意思 看不懂啊。。
可以放到 = 号的两边,表示 左连接或 右连接
gingerkang 2013-08-29
  • 打赏
  • 举报
回复
select * from a,b where a.c0(+)=b.c1 <====>select * from a left join b on a.c0=b.c1 select * from a,b where a.c0=(+)b.c1 <====>select * from a right join b on a.c0=b.c1 select * from a,b where a.c0=b.c1 <====>select * from a inner join b on a.c0=b.c1

17,377

社区成员

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

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