2个表的查询问题,也许不难!
table1的内容:    
 id;      data 
 1;      xx 
 2;      xxxxxxxxx 
 3;      xxxxxxxxxx 
 4;      xxxx 
 5;      xxxxxxxxxx 
 ...   
 也就是说data列只能存储10个字符,如果大于10个字符,剩下的就要到table2里面去找了。table2其实是table1里data数据列的延续:   
 table2的内容:   
 id;      seg;      data; 
 3;         1;         aaa 
 5;         1;         bbbbbb 
 5;         2;         cc 
 ...   
 比如上面的例子,id=3的这行在table2里面也出现了(id=3),而且seg=1,那么就是说id=3的这行的data列的内容应该是:   xxxxxxxxxxaaa   
 又比如id=5的这行在table2里面也出现了(id=5),而且seg=1,2   ,这就是说id=5的这行的data列的内容应该是:   xxxxxxxxxxbbbbbbcc     
 我想求一个SELECT语句,返回这2个表的内容,但是要合并data这列,也就是说我想查询的效果是这样的:   
 id;      data 
 1;      xx 
 2;      xxxxxxxxx 
 3;      xxxxxxxxxxaaa 
 4;      xxxx 
 5;      xxxxxxxxxxbbbbbbcc 
 ...     
 不知道这种SELECT语句有没有可能写出来?
------解决方案----------------------SQL Server 2000下可以用多种方式处理: 
 --1、创建自定义函数 
 --2、用游标     
 --使用函数是最简单的方法,如下:     
 --创建测试环境 
 create table 表1(id int,data varchar(100)) 
 insert into 表1 
 select 1, 'xx ' union all 
 select 2, 'xxxxxxxxx ' union all 
 select 3, 'xxxxxxxxxx ' union all 
 select 4, 'xxxx ' union all 
 select 5, 'xxxxxxxxxx '   
 create table 表2(id int,seg int,data varchar(100)) 
 insert into 表2 
 select 3,1, 'aaa ' union all 
 select 5,1, 'bbbbbb ' union all 
 select 5,2, 'cc '     
 go   
 --写一个聚合函数: 
 create function dbo.fn_Merge(@id int) 
 returns varchar(8000) 
 as 
 begin 
    declare @result varchar(8000) 
    set @result= ' ' 
    select @result=@result+b.data from 表1 as A inner join 表2 as B on a.id=B.id where B.id=@id 
    return stuff(@result,1,1, ' ') 
 end 
 go   
 -- 调用函数 
 select id, data + isnull(dbo.fn_Merge(id), ' ') as data from 表1       
 drop table 表1,表2 
 drop function fn_Merge
------解决方案--------------------为什么要设计成这样,怕程序员没事做吗 
------解决方案--------------------哈哈
------解决方案--------------------seg 加多个order by 要不可能出现顺势问题     
   不过..为什么要这样设数据库呢..又不直观