2014-11-14 80 views
0

我有以下表格。查詢獲取父母的子女記錄

+-------+--------+-------+ 
|  Id| Name| Parent| 
+-------+--------+-------+ 
|  0|  A|  -1| 
|  1|  B|  0| 
|  2|  C|  1| 
|  3|  D|  2| 
|  4|  E|  2| 
|  5|  F|  2| 
|  6|  G|  2| 
|  7|  H|  2| 
|  8|  I|  2| 
+-------+--------+-------+ 

-1作爲父母表示它沒有父母。層次結構可以達到7-8級。 我需要讓所有的孩子(直接+間接)。我試過類似的東西:

SELECT Id, NAME, @pv:=Id AS 'Parent' FROM tbl 
JOIN 
(SELECT @pv:=-1)tmp 
WHERE [email protected] 

但它不起作用。

+0

你能顯示預期的輸出?> – TheProvost

+0

@TheProvost,所有的孩子的名單,即對'A',我期望記錄'B'到'I'。因爲B是A的孩子。C是B的孩子,其餘的都是C的孩子。 – benjamin54

+0

哦,那麼我建議你使用CTE。它就像一個子查詢,但你可以遞歸地調用它,這正是你需要的。 – TheProvost

回答

0

嘗試此查詢

SELECT t1.name AS lev1, t2.name as lev2 
FROM tbl1 AS t1 
LEFT JOIN tbl1 AS t2 ON t2.parent = t1.id 
WHERE t1.id = 2; 

預期輸出

+-------+--------+ 
| lev1| lev2| 
+-------+--------+ 
|  C|  D| 
|  C|  E| 
|  C|  F| 
|  C|  G| 
|  C|  H| 
|  C|  I| 
+-------+--------+ 

Referance

相關問題