求 sql server两张表树形结构查询语句解决方案
求 sql server两张表树形结构查询语句

sqlserver表结构如图所示,需要将两张表查询为树形结构显示。
A表中bs_guid 为B表外键关联关系
单独一张表我知道可以使用CTE表达式递归查询出树状结果,
但是要将两张表查询为树状结构,就不知道怎么操作了,搞了一天没搞出来,求大神指点,非常感谢!!!
------解决思路----------------------
树形不是查出来的,是你前台显示的,你只需要按照外键查处对应的数据,其中包括id,pid之类的能够说明层次关系的字段,你在前台去组织显示
http://blog.****.net/rubychen410/article/details/4282175
------解决思路----------------------
首先得感谢你提出的这个问题,让我去学习了一下CTE,以前都不知道原来SQLserver还能写递归的
with CTE as
(
-->Begin 一个定位点成员
select DrugClass_id,
cast(DrugClassName as nvarchar(max)) as TE
from DrugClass where ParentId= '0'
-->End
union all
-->Begin一个递归成员
select DrugClass.DrugClass_id,
cast(replicate(' ',len(CTE.TE))+'
------解决思路----------------------
_'+DrugClass.DrugClassName as nvarchar(MAX)) as TE
from DrugClass inner join CTE
on DrugClass.ParentId=CTE.DrugClass_id
-->End
union all
-->Begin第二个递归成员
select Drug.Drug_id,
cast(replicate(' ',len(CTE.TE))+'
------解决思路----------------------
_' + Drug.DrugName as nvarchar(MAX)) as TE
from Drug inner join CTE
on Drug.DrugClass_id=CTE.DrugClass_id
-->End
)
select * from CTE
没啥难的,就是递归两次来实现这个效果
Drugclass就是你的表A,Drug就是你的表B
sqlserver表结构如图所示,需要将两张表查询为树形结构显示。
A表中bs_guid 为B表外键关联关系
单独一张表我知道可以使用CTE表达式递归查询出树状结果,
但是要将两张表查询为树状结构,就不知道怎么操作了,搞了一天没搞出来,求大神指点,非常感谢!!!
------解决思路----------------------
树形不是查出来的,是你前台显示的,你只需要按照外键查处对应的数据,其中包括id,pid之类的能够说明层次关系的字段,你在前台去组织显示
http://blog.****.net/rubychen410/article/details/4282175
------解决思路----------------------
首先得感谢你提出的这个问题,让我去学习了一下CTE,以前都不知道原来SQLserver还能写递归的
with CTE as
(
-->Begin 一个定位点成员
select DrugClass_id,
cast(DrugClassName as nvarchar(max)) as TE
from DrugClass where ParentId= '0'
-->End
union all
-->Begin一个递归成员
select DrugClass.DrugClass_id,
cast(replicate(' ',len(CTE.TE))+'
------解决思路----------------------
_'+DrugClass.DrugClassName as nvarchar(MAX)) as TE
from DrugClass inner join CTE
on DrugClass.ParentId=CTE.DrugClass_id
-->End
union all
-->Begin第二个递归成员
select Drug.Drug_id,
cast(replicate(' ',len(CTE.TE))+'
------解决思路----------------------
_' + Drug.DrugName as nvarchar(MAX)) as TE
from Drug inner join CTE
on Drug.DrugClass_id=CTE.DrugClass_id
-->End
)
select * from CTE
没啥难的,就是递归两次来实现这个效果
Drugclass就是你的表A,Drug就是你的表B