问题:
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 实现不了。有高手吗
select * from R join C on R.XId = C.XId and R.didDate Between C.beginDate AND C.endDate
這樣寫有問題嗎?不太明白你所說的合併兩張表是什麼意思?
也不是合并,就是join操作。做一个视图。这样写有问题。当R.didDate不在 C.BeginDate和C.endDate之间的时候,数据出不来。他们出来的是交集,我要的是所有记录
@mvxxx:
試一下left join on
select * from R left join C on R.XId = C.XId and R.didDate Between C.beginDate AND C.endDate
@会飞的金鱼: 也不太对,left join 会把C表的数据弄丢。。。
你要所有记录可以:(具体刷选:表名.字段)或者查询全部字段,根据关键字筛选
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
R.didDate in( C.beginDate , C.endDate)
这是时间类型,也能用in(a,b)?
@mvxxx: 不试试怎么知道?
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