2014-10-22 81 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