有2张表areainfo 表
结构:
areainfoid     areainfo     1               北京
     2               上海
     3              天津
     4               大连
person 表
结构:
id        areainfoid
1           2,4
2            3,4
3           1,2,4
.......
我想写个视图
得到这样id        areainfoid       areainfo
1           2,4               上海,大连
2            3,4              天津,大连
3           1,2,4             北京,上海,大连
.......怎么实现啊????

解决方案 »

  1.   

    create function f_c(@id int)
    returns varchar(100)
    as 
    begin
      declare @char varchar(100)
      set @char=''
      select @char=@char+c.areainfo from 
      (select a.id,a.areainfoid,b.areainfo from person a,areinfo b where charindex(b.areainfo,a.areainfo)<>0) c
      where c.id=@id
      return(@char)
    end
    goselect id,areainfoid,dbo.f_c(id) from person
      

  2.   

    create table areainfo(areainfoid int,areainfo varchar(8))
    insert into areainfo select 1,'北京'
    insert into areainfo select 2,'上海'
    insert into areainfo select 3,'天津'
    insert into areainfo select 4,'大连'
    create table person(id int,areainfoid varchar(20))
    insert into person select 1,'2,4'
    insert into person select 2,'3,4'
    insert into person select 3,'1,2,4'
    gocreate function f_str(@areainfoid varchar(100))
    returns varchar(100)
    as
    begin
        set @areainfoid=','+@areainfoid+','
        select @areainfoid=replace(@areainfoid,','+rtrim(areainfoid)+',' ,','+areainfo+',') from areainfo
        set @areainfoid=substring(@areainfoid,2,len(@areainfoid)-2)
        return @areainfoid
    end
    gocreate view v_area
    as
    select id,areainfoid,areainfo=dbo.f_str(areainfoid)from person
    goselect * from v_area
    /*
    id          areainfoid           areainfo
    ----------- -------------------- --------------------
    1           2,4                  上海,大连
    2           3,4                  天津,大连
    3           1,2,4                北京,上海,大连
    */
    godrop view v_area
    drop function f_str
    drop table areainfo,person
    go