2014-03-26 89 views
0

我有下面的表,它存储了合并项目的记录。 这里Merge1是主要项目,Merge2是二级项目,这意味着Merge2被合并到Merge1中。自加入SQL服务器

Merge1 Merge2 
------------------ 
1  2 
3  1 
4  3 
4  8 
9  6 
7  9 

现在我想编写一个查询将返回特定项目的内容说,项目编号4. 这里项目4包含8,3,1 & 2。

我怎样才能在SQL中做到这一点?

+0

圆形情况可能吗? – 2014-03-26 07:43:05

+1

处理材料明细表(BOM)时通常遇到此类查询。使用该术语和SQL Server进行搜索应找到大量示例。 –

+0

@ dan1111:循环状态意味着什么? – punter

回答

1

以下是提供所需结果的查询。 (Fiddle

with cte_merge (projectid) 
AS 
(
    select merge2 from testBOM where merge1=4 
    UNION ALL 
    select merge2 from testBOM inner join cte_merge on testBOM.merge1 = cte_merge.projectid 
) 
select * from cte_merge 

希望它可以帮助你。

+0

感谢队友:)完美工作! – punter

+0

欢迎。我很高兴它的工作。 :) –