2017-06-01 103 views
0

映射我有一個這樣的表:通過遞歸在SQL

[Mappings] 

Parent | Child 
--------------- 
    4 | 10 
    1 | 4 

在SQL中,我試圖運行與10輸入查詢,並取回其父母的全部環比上漲。在這種情況下41

如果我用4的輸入運行它,它將返回1

我在想我需要使用一個公共表格表達式(CTE),但是語法卻把我拋棄了。

+0

什麼RDBMS也許有用嗎?該語言可以是具體的 – xQbert

+1

它的答案在這裏: [https://stackoverflow.com/questions/28170635/get-all-parents-for-a-child](https://stackoverflow.com/questions/28170635/get -all-parents-for-a-child) –

+0

這是SQL Server – mariocatch

回答

1

我懷疑你使用SQL Server,如果是,那麼你需要的東西是這樣的:

create table #test(
Parent int, 
Child int 
); 

insert into #test 
values 
(4 , 10), 
(1 , 4), 
(10 , 12); 

with rec as (
    select #test.*, 1 as lvl from #test where Child = 10 
    union all 
    select #test.*, lvl + 1 as lvl from #test  
    inner join rec 
    on #test.Child = rec.Parent 
) 
select parent, lvl from rec 
OPTION (MAXRECURSION 0) 

也能看到(在這種情況下lvl)級列