我有一个类似下面的样本表
表1
chktid ToUser
1 3
2 6
3 3
4 1
chkid
是parentId,有时这个父级有子级,每个子级都有子子级,等等
我编写了一个函数来返回特定chktid
的所有子节点和子子节点。使用不同的dbo.hierychyreturnfn(chktid)
作为输入参数调用我的函数chktid
,我得到以下结果
对于 chktid = 1 以及select * from dbo.hierychyreturnfn(1)
,输出为:
chkchildid
10
11
12
13
对于 chktid = 2 以及select * from dbo.hierychyreturnfn(2)
,输出为:
chkchildid
14
15
16
对于 chktid = 3 以及select * from dbo.hierychyreturnfn(3)
,输出为:
chkchildid
19
对于 chktid = 4 以及select * from dbo.hierychyreturnfn(4)
,它不返回任何行,因为chkid = 4没有子项。
我的问题是:有没有办法加入函数和表1并返回所有结果?
我的预期结果是:
chkid ToUser chkchildid
1 3 10
1 3 11
1 3 12
1 3 13
2 6 14
2 6 15
2 6 16
3 3 19
我正在尝试使用交叉申请来获取此
SELECT a.chkid
,a.ToUser
,b.chkchildid
FROM table1 a
CROSS APPLY dbo.hierychyreturnfn(1) b // need to join table1 and pass each chkid
但我不知道如何将每个chkid
传递给hierychyreturnfn()
。我被困在这里。我也尝试了下面的代码,但它给出了一个错误
“chkid”不是可识别的表提示选项。如果它是作为一个 表值函数或CHANGETABLE函数的参数, 确保您的数据库兼容模式设置为90。
SELECT a.chkid
,a.ToUser
,b.chkchildid
FROM table1 a
CROSS APPLY dbo.hierychyreturnfn(chkid) b
请帮我解决这个问题。