[英]SQL query: help needed
我需要有关sql查询的帮助,我试图通过创建以下简单示例来复制实际问题:
父母表:
id name parent_id
1 parent1 null
2 parent2 1
3 parent3 1
4 parent4 3
5 parent5 3
6 parent6 5
7 parent7 5
亲戚表:
id name parent_id
1 relative1 2
2 relative2 3
3 relative3 4
4 relative4 5
5 relative5 7
父母表有父母的列表,父母也有父母自己。 亲戚表有一个带有parent_id列的亲戚列表。
我将如何找到parent3的所有亲戚,包括parent3的所有“后代”,即查询应从Relatives表中返回以下内容:
relative2(因为父ID为3)
relative3(因为父代ID是4,而父代ID是3)
relative4(因为父ID为5,其父ID为3)
relative5(因为父代ID为7,父代ID为5,父代ID为3)
我正在使用SQL Server2008。希望这是有道理的,感谢您的帮助。
尝试这个
;WITH CTE
AS
(
SELECT [id], [name] FROM Parents WHERE [name] = 'parent3'
UNION ALL
SELECT T1.[id], T1.[name] FROM CTE c
INNER JOIN Parents T1 ON c.[id] = T1.[parent_id]
)
SELECT * FROM Relatives
WHERE [parent_id] IN (SELECT [id] FROM CTE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.