在等待更新的帖子:
SELECT DISTINCT
p.parent AS parent
, c.child AS child
, IFNULL(g.child, 'NONE') AS grandchild_of_parent
FROM parent_child as p
LEFT JOIN parent_child AS c ON p.parent = c.parent
LEFT JOIN parent_child AS g ON c.child = g.parent;
结果是这样的:
parent child grandchild_of_parent
1 4 8
1 5 NONE
2 6 9
3 7 10
4 8 11
6 9 NONE
7 10 NONE
8 11 NONE
这样一个头脑简单但很可能,更难维护的代码类型,但由于我不熟悉SQL Server 2008的内置功能来处理这种类型的请求,我只会抛出一个远射...
编辑:
只是让你可以看到自己的结果,而你学习common table expressions
和/或可能pivots
...这将让您的结果,但只到1的曾孙和2
-- A. Parents 1 and 2
SELECT DISTINCT p.parent FROM parent_child AS p
WHERE p.parent IN (1,2)
UNION
-- B : Children of A
SELECT DISTINCT p.child FROM parent_child AS p
WHERE p.parent IN (1,2)
UNION
-- C : Children of B, Grandchildren of A
SELECT DISTINCT p.child FROM parent_child AS p
WHERE p.parent IN (
SELECT DISTINCT p.child FROM parent_child AS p
WHERE p.parent IN (1,2)
)
UNION
-- D : Children of C, Great-Grandchildren of A
SELECT DISTINCT p.child FROM parent_child AS p
WHERE p.parent IN (
SELECT DISTINCT p.child FROM parent_child AS p
WHERE p.parent IN (
SELECT DISTINCT p.child FROM parent_child AS p
WHERE p.parent IN (1,2)
)
)
同样,我强烈建议你研究其他人发布的内容。并查看他们提供的链接。我给你提供的不雅问题不会持续很长时间 - >一旦你有了曾曾曾孙,这绝对是FAIL
。
输出是否需要显示它们的关系(儿童,孙辈等)还是他们简单地下降? – UnhandledExcepSean
你能给我们一个表格/行列格式的预期输出的样本,就像你如何用父子关系来展示表格一样吗? – Nonym
Nonym,我将预期的输出添加到问题中。 – MvdD