
sqlserver表结构如图所示,需要将两张表查询为树形结构显示。
A表中bs_guid 为B表外键关联关系
单独一张表我知道可以使用CTE表达式递归查询出树状结果,
但是要将两张表查询为树状结构,就不知道怎么操作了,搞了一天没搞出来,求大神指点,非常感谢!!!
------解决思路----------------------
;WITH Tree AS(
SELECT bs_guid,CAST(bs_name AS VARCHAR(8000))bs_name,1 LVL,CAST(bs_guid AS VARCHAR(8000))P
FROM A
WHERE parent_guid IS NULL--如果你无父节点是用空字符串''表示的话,就改为parent_guid=''
UNION ALL
SELECT T2.bs_guid,REPLICATE(' ',T1.LVL)+T2.bs_name,T1.LVL+1,T1.P+','+CAST(T2.bs_guid AS VARCHAR)
FROM Tree T1 JOIN A T2 ON T1.bs_guid=T2.parent_guid
)
SELECT bs_guid,bs_name,P FROM Tree
UNION ALL
SELECT '',REPLICATE(' ',T1.LVL+1)+T2.tsk_name,T1.P+','
FROM Tree T1 JOIN B T2 ON T1.bs_guid=T2.bs_guid
ORDER BY P