繁体   English   中英

SQL查询:需要帮助

[英]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)

SQL FIDDLE DEMO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM