难倒一片大神的sql问题
有a,b两表,均有id,date字段,a表保存了完整的数列seq,b表描述了a表某段数列间的数据信息(seq_start,seq_end,seq_val),要求写一view生成一张根据b表描述标记a表的完整表,且数据不能有冗余
a表:
id date seq
1 2012/1/1 1
1 2012/1/1 2
1 2012/1/1 3
1 2012/1/2 1
1 2012/1/2 2
1 2012/1/2 3
2 2012/1/1 1
2 2012/1/1 2
...
b表:
id date seq_start seq_end seq_val
1 2012/1/1 2 3 'val1'
1 2012/1/2 1 2 'val2'
2 2012/1/1 1 2 'val3'
...
完成表:
id date seq seq_val
1 2012/1/1 1
1 2012/1/1 2 'val1'
1 2012/1/1 3 'val1'
1 2012/1/2 1 'val2'
1 2012/1/2 2 'val2'
1 2012/1/2 3
2 2012/1/1 1 'val3'
2 2012/1/1 2 'val3'
...
这个问题我自己就搞了一周,写了个用left join的view,on条件过于复杂结果慢的没法用,问了好多大神都被难倒的稀里哗啦的,要是csdn上没人搞那我就只能用存储过程自己整了
------解决方案--------------------select a.*,b.seq_val
from a a
left join b b on a.id = b.id
and a.date = b.date
and a.seq >= b.seq_start
and a.seq <= b.seq_end;
------解决方案--------------------