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