对于我无法解决的这个查询,我需要您的帮助。事情是这样的,假设我有一张这样的桌子:
Father | Son
1 | 2
1 | 3
1 | 4
3 | 5
3 | 6
2 | 7
4 | 8
5 | 9
6 | 10
所以你可以看到表格代表父子关系,我需要找到一个父亲的所有儿子(以及儿子的儿子),例如,如果我要寻找 1 号的儿子,我们会得到一个像这样的表格这
Father | son
1 | 2
1 | 3
1 | 4
1 | 5
1 | 6
1 | 7
1 | 8
1 | 9
1 | 10
如果我正在寻找 3 号的儿子,我们将得到:
Father | son
3 | 5
3 | 6
3 | 9
3 | 10
好吧,我想你明白我的意思了。下一个问题是我必须为表中的每个父亲都这样做。所以最后,表格如下:
Father | son
1 | 2
1 | 3
1 | 4
1 | 5
1 | 6
1 | 7
1 | 8
1 | 9
1 | 10
3 | 5
3 | 6
3 | 9
3 | 10
2 | 7
4 | 8
5 | 9
6 | 10
和翻过一棵树非常相似。我一直试图弄清楚这个查询一段时间但没有成功。我做了这样的代码
WITH son
AS (
-- in
SELECT FK_CC_B
FROM PG_Rols_CC
WHERE FK_CC_A = @idCC
UNION ALL
--recur
SELECT t.FK_CC_B
FROM PG_Rols_CC AS t
JOIN hijos AS a
ON t.FK_CC_A = a.FK_CC_B
)
insert into @TableSons (idSon) SELECT * FROM son
但它不能同时适用于每个父亲,结果表有点不同,它只有儿子 ID。例子
son
3
4
5
6
7
希望您能够帮助我。