使用MySQL查找树中的级别数


Find number of levels in a tree using MySQL

我的行有相关行,这些行可以有相关行。这棵树可以下很多层(未知)。如何根据一个参数找到树的层数?

例如:

select * from category a 
inner join category b on a.row=b.relatedRow 
inner join category c on b.row=c.relatedRow where a.row=?

因此,如果a中有项目,级别1。如果b中有项目,级别2等等。这样我可以发现,如果行=1,则有3个级别的其他项目是相关的。

创建两个php函数,一个用于获取主类别,另一个用于获得主类别的子类别。

function GetCategory($Cat_Id, $Cat_Name="")
{
$level = "";
echo $sql = "SELECT * FROM category WHERE 1=1 AND Cat_ParentId='0'";
$result = @mysql_query($sql);
while($row = @mysql_fetch_assoc($result))
{
    if(!empty($Cat_Id))
    {
        if($row['Cat_Id']==$Cat_Id)
        {
            $selected = "selected='selected'";
        }
        else
        {
            $selected = "";
        }
    }
    else
    {
        $selected="";
    }
    $resul .=  $level.$row['Cat_Name']."<br />";
    $resul .= GetSubCateogry($row['Cat_Id'], $level);
}
return $resul;
}
function GetSubCateogry($Cat_Id, $level)
{
$level .= "--";
$sql = "SELECT * FROM category WHERE Cat_ParentId = '$Cat_Id'";
$result = @mysql_query($sql);
while($row = @mysql_fetch_assoc($result))
{
    if(!empty($Cat_Id))
    {
        if($row['Cat_Id']==$Cat_Id)
        {
            $selected = "selected='selected'";
        }
        else
        {
            $selected = "";
        }
    }
    else
    {
        $selected="";
    }
    $resul .=  $level.$row['Cat_Name']."<br />";
    $resul .= GetSubCateogry($row['Cat_Id'], $level);
}
return $resul;
}
echo GetCategory(1);