关于SQL语句的问题(100分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
sql server 2000

比如表T1:
field1
A1
A2
A3

表T2:
field1 field2
A1 A11
A1 A12
A1 A13
A11 B11
B11 C11
A12 B12

(A)、显示为:
A1
|_A11
| |_B11
| |_C11
|_A12
| |_B12
|_A13

我想表T1的field1='A1'时,根据(A)而显示报表为:
field1
C11
B12
A13

请问这个报表如何写sql语句?
 
看不懂你想问什么,你的话太拗口了。
 
写清楚点。
 
我想这位大哥的意思是:
  从表T1中取出一个数据,然后按照(A)算法,从表T2中找出(A)树的叶节点,
打印出来。
 
我想这位大哥的意思是:
  从表T1中取出一个数据,然后按照(A)算法,从表T2中找出(A)树的叶节点,
打印出来。不知我理解的对不对。
 
我想这个问题好像不能通过只写SQL语句来解决,可能要写个过程,
将查询到的符合条件的数据写入一临时表中,然后再打印报表
 
三石这样理解是对的,(A)是根据T1和T2两表来的,用树形控件就可以实现的,但是要
筛选(A)的最底层又如何做:
当field1='A1'时,显示报表为:
field1
C11
B12
A13

 
你的数据结构定得不好!
如果你非要这样
你只好一级级来求
 
没有办法,你好象只能写过程一级一级来求了,
 
帮你写了个过程:
declare @Loop as bit
select Field2 into #Result from T2 where Field1='A1';
if @@RowCount>0
select @Loop=1
else
select @loop=0
while @Loop=1
begin
select * into [#T2] from T2 where T2.Field1 in (select * from #Result);
if @@RowCount=0
begin
drop table #T2
Break
end
update #Result set Field2=#T2.Field2 from #T2 where #Result.Field2=#t2.Field1;
drop Table [#T2];
end
select * from #Result

 
接受答案了.
 
后退
顶部