现在公司为了规范所有输入的数据,所有的数据先是输入到一个表中,而新建明细时数据直接取这个表中的数据,但是问题来了。在读取明细表时,读出来的都是代码,而不是具体的数据。
  如何建立这样的视图,而且效率高呢?详情如下:  规范表tb2
     mv01      mv02     mv03
   0001 101001 偏左                                                        
0002 101002 偏心                                                        
0003 101003 常规                                                        
0004 102001 无槽                                                        
0005 102002 V型                                                         
0006 102003 L型                                                         
0007 103001 Z1                                                          
0008 103002 Z2                                                          
0009 103003 Z3                                                          
0010 104001 C1
0011 104002 C2
0012 104003 C3
0013 105001 N601
0014 105002 N602
0015 105003 N603
0016 106001 V3-4
0017 106002 V3*5
0018 106003 V3-7
0019 107001 VW001
0020 107002 VQ001
0021 107003 VW002
0022 108001 X86
0023 108002 X286
0024 108003 X386
0025 109001 8#钢板/铆钉                                                 
0026 109002 8#钢板/弯爪                                                 
0027 109003 尼龙                                                        
0028 110001 Φ2.381*8                               
0029 110002 Φ3.175*6                                     
0030 110003 Φ3.500*7                                       明细表tb1
    mb01    mb02         mb03   mb04   mb05   mb06   mb07   mb08   mb09   mb10   mb11   mb12
    0001   十字螺钉      101001 102001 103001 104001 105001 106001 107001 108001 109001 110001
    0002   十字自攻螺钉  101002 102002 103002 104002 105002 106002 107002 108002 109002 110002
    0003   万能自攻螺钉  101003 102003 103003 104003 105003 106003 107003 108003 109003 110003需要达到的效果:
   mb01    mb02         mb03   mb04   mb05   mb06   mb07   mb08   mb09   mb10   mb11        mb12
   0001   十字螺钉      偏左  无槽   Z1     C1     N601   V3-4   VW001  X86    8#钢板/铆钉 Φ2.381*8
  

我是要能过网页读取,是建视图好呢,还是有更好的方法处理,力求效率.
 如果建立视图,而且效率高该怎么建呢?如果有其他的方法处理,那又是什么。请诸们赐教!

解决方案 »

  1.   

    视图只不过是把SQL语句编译好存到一个地方,而不是像SQL语句那样每次都编译if object_id('tb2') is not null
    drop table tb2
    go
    create table tb2(mv01 char(4),mv02 char(6),mv03 varchar(50))
    go
    insert into tb2(mv01,mv02,mv03)
    select '0001' mv01,'101001' mv02,'偏左' mv03
    union all 
    select '0002','101002','偏心'  union all    
    select '0003','101003','常规'  union all    
    select '0004','102001','无槽'  union all    
    select '0005','102002','V型'  union all    
    select '0006','102003','L型'  union all    
    select '0007','103001','Z1'  union all    
    select '0008','103002','Z2'  union all    
    select '0009','103003','Z3'  union all    
    select '0010','104001','C1'  union all 
    select '0011','104002','C2'  union all 
    select '0012','104003','C3'  union all 
    select '0013','105001','N601'  union all 
    select '0014','105002','N602'  union all 
    select '0015','105003','N603'  union all 
    select '0016','106001','V3-4'  union all 
    select '0017','106002','V3*5'  union all 
    select '0018','106003','V3-7'  union all 
    select '0019','107001','VW001'  union all 
    select '0020','107002','VQ001'  union all 
    select '0021','107003','VW002'  union all 
    select '0022','108001','X86'  union all 
    select '0023','108002','X286'  union all 
    select '0024','108003','X386'  union all 
    select '0025','109001','8#钢板/铆钉'  union all    
    select '0026','109002','8#钢板/弯爪'  union all    
    select '0027','109003','尼龙'  union all    
    select '0028','110001','Φ2.381*8'  union all    
    select '0029','110002','Φ3.175*6'  union all    
    select '0030','110003','Φ3.500*7'
    Goif object_id('tb1') is not null
    drop table tb1
    go
    create table tb1(mb01 char(4),mb02 varchar(50),mb03 char(6),mb04 char(6),mb05 char(6),mb06 char(6),mb07 char(6),mb08 char(6),mb09 char(6),mb10 char(6),mb11 char(6),mb12 char(6))
    go
    insert into tb1
    select '0001','十字螺钉','101001','102001','103001','104001','105001','106001','107001','108001','109001','110001'  union all
    select '0002','十字自攻螺钉','101002','102002','103002','104002','105002','106002','107002','108002','109002','110002' union all
    select '0003','万能自攻螺钉','101003','102003','103003','104003','105003','106003','107003','108003','109003','110003'--下面语句创建视图
    if object_id('v01') is not null
    drop view v01
    go
    create view v01
    as
    select mb01,mb02,
    (select mv03 from tb2 where tb2.mv02=tb1.mb03) mb03,
    (select mv03 from tb2 where tb2.mv02=tb1.mb04) mb04,
    (select mv03 from tb2 where tb2.mv02=tb1.mb05) mb05,
    (select mv03 from tb2 where tb2.mv02=tb1.mb06) mb06,
    (select mv03 from tb2 where tb2.mv02=tb1.mb07) mb07,
    (select mv03 from tb2 where tb2.mv02=tb1.mb08) mb08,
    (select mv03 from tb2 where tb2.mv02=tb1.mb09) mb09,
    (select mv03 from tb2 where tb2.mv02=tb1.mb10) mb10,
    (select mv03 from tb2 where tb2.mv02=tb1.mb11) mb11,
    (select mv03 from tb2 where tb2.mv02=tb1.mb12) mb12
    from tb1
    go
    select * from v01