2013-08-29 65 views
3

我有表有ID和perent如下所示:获得MySQL查询孩子的水平

id parent 
12  0 
21  12 
34  12 
47  21 
57  21 
66  21 
77  34 
88  47 

我想写个查询花了ID,并返回其水平这个ID:

例如

1 => level 1 
2 and 3 => level 2 
4 => level 3 
... and so on. 

我的尝试:

SELECT cc1.id, count(cc1.id) c FROM community_comments cc1 
inner join community_comments cc2 on cc1.id = cc2.parent 
AND cc1.parent = 324 group by cc1.parent 

这回有多少水平下324级,这不是我想要的

+0

为什么被打上了mysqli的解决呢? –

+0

我正在使用mysqli引擎 –

+0

考虑切换到嵌套集模型 – Strawberry

回答

2

我使用PHP代码

function get_comment_level($comment_id){ 

     $query = "select parent from community_comments where id = $comment_id"; 

     $result = $this->conn->db_query($query); 

     $level = 1; 
     $parent = 0; 

     while ($row = $this->conn->db_fetch_object($result)){ 
      $parent = $row->parent; 
     } 

     if ($parent != 0) { 
      $level = $this->get_comment_level($parent); 
      $level++; 
     } 

     return $level; 
    }