2014-10-22 79 views
1

我试图让所有与父级相关的子级ID(多级)。我认为使用Recursive会做到这一点,试图查询它没有返回预期的结果,我甚至不知道这是写入方式去做这件事或我会出错的地方。从结构树返回父级ID

预期结果是返回指定地点的所有城市和县。

例如,如果我传递了英格兰的id(id = 1),我想返回与它关联的所有id。它可高达4-5级关联

的例如

Id  Location 
----- --------------- 
1  England 
3  London   (as its associated with England)   
5  Ealing   (as associated with London) 
6  Westminster  (as associated with London) 
7  Camden   (as associated with London) 
8  Barnet   (as associated with London) 

。 。 。

SQL Fiddle example

可有人请点我就如何解决这个正确的方向。这是解决这个问题的正确方法吗?

谢谢。

回答

0

您正在朝着正确的方向前进。

考虑我所取得的结果:

;WITH locationFamily AS 
(
    SELECT id 
      ,location_name 
      ,parent_id 
      ,0 as level 
    FROM location 
    WHERE parent_id IS NULL 
    and id = 1 
    UNION ALL 
    SELECT ls.id 
      ,ls.location_name 
      ,ls.parent_id 
      ,level + 1 
    FROM location ls 
    INNER JOIN locationFamily lf ON ls.parent_id= lf.id 
) 
SELECT * 
FROM locationFamily 

招ID条件的第一选择的CTE,改变别名ID的连接。

+0

这解决了我的问题,谢谢你的尖塔。 – 2014-10-22 14:28:38