簡體   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