首页 新闻 会员 周边

写一个oracle sql

0
悬赏园豆:100 [待解决问题]

问题:

  2张表,1张记录表,1张周期记录表

  记录表R (id,didDate,XId...)

  周期记录表C (id,beginDate,endDate,XId...)

求sql:

  合并2张表。

  规则1:R.XId = C.XId

  规则2:R.didDate Between C.beginDate AND C.endDate

这个Sql 该怎么写?用 JOIN ON 实现不了。有高手吗

mvxxx的主页 mvxxx | 初学一级 | 园豆:102
提问于:2015-07-17 15:20
< >
分享
所有回答(4)
0

select * from R join C on R.XId = C.XId and R.didDate Between C.beginDate AND C.endDate

這樣寫有問題嗎?不太明白你所說的合併兩張表是什麼意思?

会飞的金鱼 | 园豆:881 (小虾三级) | 2015-07-17 15:37

也不是合并,就是join操作。做一个视图。这样写有问题。当R.didDate不在 C.BeginDate和C.endDate之间的时候,数据出不来。他们出来的是交集,我要的是所有记录

支持(0) 反对(0) mvxxx | 园豆:102 (初学一级) | 2015-07-17 16:26

@mvxxx: 

試一下left join on 

select * from R left join C on R.XId = C.XId and R.didDate Between C.beginDate AND C.endDate

支持(0) 反对(0) 会飞的金鱼 | 园豆:881 (小虾三级) | 2015-07-17 16:31

@会飞的金鱼: 也不太对,left join 会把C表的数据弄丢。。。

支持(0) 反对(0) mvxxx | 园豆:102 (初学一级) | 2015-07-18 13:14
0

你要所有记录可以:(具体刷选:表名.字段)或者查询全部字段,根据关键字筛选

select R.id.R.didDate,R.XId,C.id.C.beginDate,C.endDate from R left join C on R.XId = C.XId and R.didDate Between C.beginDate AND C.endDate

伏草惟存 | 园豆:1420 (小虾三级) | 2015-07-17 16:38
0

R.didDate in( C.beginDate , C.endDate)

如此低调的男人 | 园豆:842 (小虾三级) | 2015-07-18 17:57

这是时间类型,也能用in(a,b)?

支持(0) 反对(0) mvxxx | 园豆:102 (初学一级) | 2015-07-20 15:58

@mvxxx: 不试试怎么知道?

支持(0) 反对(0) 如此低调的男人 | 园豆:842 (小虾三级) | 2015-07-20 19:10
0

select R.id.R.didDate,R.XId,C.id.C.beginDate,C.endDate from R left join C on R.XId = C.XId and R.didDate Between C.beginDate AND C.endDate

Vip灬cnblog | 园豆:133 (初学一级) | 2015-07-21 20:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册