你还应该有个字段是parentlist,把所有的父类ID记录下来。

解决方案 »

  1.   

    select * from table where id=$id
      

  2.   

    INSERT INTO `t` (`id`, `name`, `parent_id`) VALUES (0, 'root', 0);
    INSERT INTO `t` (`id`, `name`, `parent_id`) VALUES (1, 'a', 0);
    INSERT INTO `t` (`id`, `name`, `parent_id`) VALUES (2, 'b', 0);
    INSERT INTO `t` (`id`, `name`, `parent_id`) VALUES (3, 'c', 0);
    INSERT INTO `t` (`id`, `name`, `parent_id`) VALUES (4, 'bb', 2);
    INSERT INTO `t` (`id`, `name`, `parent_id`) VALUES (5, 'bbb', 4);
            
    SELECT * FROM `t` a,t b where a.id=b.parent_id

    id name parent_id id name parent_id 
    0  root 0         0  root 0 
    0  root 0         1  a    0 
    0  root 0         2  b    0 
    0  root 0         3  c    0 
    2  b    0         4  bb   2 
    4  bb   2         5  bbb  4 
    看看这个结果,应该不难写出吧
      

  3.   

    你该在表里面加个字段parent_id,每当插入数据的时候把对应的父系ID插到parent_id里面这样就可以对应查到了
    SELECT * FROM `t` a,t b where a.id=b.parent_id
      

  4.   

    需要的是要获得所有父系ID
    借唠叨老大表结果
    给出id=4,要获得其所有父系ID为2,0
    给出id=5,要获得其所有父系ID为4,2,0
      

  5.   

    function get_block_physic_dir(&$DB_site,$id,$str='') {
    if (empty($id)) return false;
    $sql = "SELECT block_id,parent_id FROM BLOCK WHERE block_id=$id";
    $blockInfo = getQueryFirst($sql);
    //echo $str."<br>";
    if (!empty($blockInfo))
    $str = $blockInfo[block_id].$str;
    else
    return false;
    if ($blockInfo[parent_id] != 0)
    $str = get_block_physic_dir($blockInfo[parent_id],$str);
    return $str;

    }这样能够买足要求了,高手给点意见