id pid treename type1  0   a         1
2  1   a1  0
3  2   a2  0
4  2   a3  0我要找出id=4的父目录,并且type是1记录,上下级别数不固定的,怎么写啊?

解决方案 »

  1.   

    上下级别数不固定的
    这个不知是什么。
    //忽略上面的那个条件
    SELECT b.* FROM `table` AS a 
    LEFT JOIN `table` AS b ON (a.id = b.pid)
    WHERE a.id = 4 AND b.type = 1
      

  2.   

    现在弄树结构数据,我一般都引入lft,rgt,即所谓的左右值树结构.保证一个节点的所有的子孙节点的lft > 当前节点的lft, rgt < 当前节点的rgt.
    保证一个节点的所有的父节点的lft在当前节点的lft和rgt之间。所以找什么子孙节点或者父祖节点就可以一句sql搞定,如果按原始的id,pid来设计,要不是搞个存储过程,要么一层层sql找,或者全部取出来php去弄。lft,rgt在操作方面就麻烦一点,节点数据增删改都要多出一两条语句进行更新,这个可以google.