oracle 递归树形列表
数据库tab_new_dept  
d_id d_name  p_id
1    总部     0
2    分公司1  1
3    分公司2  1
4    财务部   2
5    人力部   2
6    客服部   3
7    后勤部   3
查询语句为
select d_id as id,p_id as pid,d_name as name,decode((select count(1) from tab_new_dept where p_id=a.d_id ), 0, 0, 1) isParent  
from tab_new_dept a
start with d_id=1 connect by prior d_id=p_id  
运行结果为:
id   pid  name  isparent
1     0   总部     1
2     1   分公司1  1
4     4   财务部   0
5     2   人力部   0
3     1   分公司2  1
....
前台使用jQuery ztree插件来显示树形菜单,正确的现实,
红色字体应该如何理解呢???
我如果改为了
select count(1) from tab_new_dept where a.p_id=d_id(注:a所放的位置不同了)上面的运行结果中isparent的值将全部相反,这2句之间有什么不同呢,应该如何理解呢,如果是代码是这样,前天的树形菜单将是循环的。
------解决方案--------------------select count(1) from tab_new_dept where p_id=a.d_id  
这个就是查看  有几个子公司  也就是用来判断是否是父亲节点
select count(1) from tab_new_dept where a.p_id=d_id
这个是找自己的父亲节点有几个  当然只有一个  用下decode肯定 就是相反的结果了