日期:2014-05-20  浏览次数:20554 次

用DataGrid的时候碰到SQL的问题。请教各位大虾。
数据库中有这样一张数据表。
id         f_id         name
1           0               zd
2           1               zd001
3           1               zd002
4           0               li
5           4               li001
6           4               li002
(其中id是主键,f_id是父节点的主键,name是名称。)
如何上述表中用复合嵌套的SQL语句检索出下面这张表:

id         父名字    自己的名字
1           __                         zd
2           zd                         zd001
3           zd                         zd002
4           __                         li
5           li                         li001
6           li                         li002

劳驾各位大虾费神了,小弟在此万分感谢。


------解决方案--------------------
上面寫錯了
應該是:
select a.id,b.name,a.name from tablename as a left join tablename as b on a.f_id=b.id
------解决方案--------------------
???什么问题

declare @t table(id int,fid varchar(20),name varchar(30))
insert into @t select '1 ', '0 ', 'zd '
union all select '2 ', '1 ', 'zd001 '
union all select '3 ', '1 ', 'zd002 '
union all select '4 ', '0 ', 'li '
union all select '5 ', '4 ', 'li001 '
union all select '6 ', '4 ', 'li002 '

select a.id,isnull(b.name, '_ ') '父名字 ',a.name '自己的名字 ' from @t as a left join @t as b on a.fid=b.id


(6 行受影响)
id 父名字 自己的名字
----------- ------------------------------ ------------------------------
1 _ zd
2 zd zd001
3 zd zd002
4 _ li
5 li li001
6 li li002

(6 行受影响)