The key table in the PeopleSoft Tree Manager data model is the PSTREENODE table.
The first three columns are the composite key of the table.
This table looks like a normal parent child self-join table.
It seems nothing special. However, if you take a closer look, you will find that PeopleSoft Tree Manager have built the intelligence into the TREE_NODE_NUM number generation.
Accounting to the posting from Grey Sparling PeopleSoft Expert's Corner, you can directly report at a given parent node without using a flatten hierarchy table or use connect-by query. PeopeSoft accomplishes this by adding the TREE_NODE_NUM_END column to the PSTREENODE table. This column helps you to get all children of a given node. The TREE_NODE_NUM and TREE_NODE_NUM_END forms the range of the TREE_NODE_NUM that can group all child nodes within the branch.
If your department tree is a winter tree, I can list all the department under a given parent department in a single SQL:
This query will return all child departments under the parent department 'FRG'.
If the department tree is a summer tree, we can just join the PSTREELEAF. It is also mentioned in Grey Sparling's blog.
The first three columns are the composite key of the table.
- TREE_NAME
- SETID
- EFFDT
This table looks like a normal parent child self-join table.
- TREE_NODE_NUM
- TREE_NODE
- PARENT_NODE_NUM
- PARENT_NODE_NAME
It seems nothing special. However, if you take a closer look, you will find that PeopleSoft Tree Manager have built the intelligence into the TREE_NODE_NUM number generation.
Accounting to the posting from Grey Sparling PeopleSoft Expert's Corner, you can directly report at a given parent node without using a flatten hierarchy table or use connect-by query. PeopeSoft accomplishes this by adding the TREE_NODE_NUM_END column to the PSTREENODE table. This column helps you to get all children of a given node. The TREE_NODE_NUM and TREE_NODE_NUM_END forms the range of the TREE_NODE_NUM that can group all child nodes within the branch.
If your department tree is a winter tree, I can list all the department under a given parent department in a single SQL:
1 select d.setid, d.deptid, d.Descr
2 from ps_Dept_tbl d
3 , pstreenode t1
4 , pstreenode t2
5 where t1.tree_name = 'DEPT_SECURITY'
6 and t2.tree_name = t1.tree_name
7 and t1.SETID = 'FEDPS'
8 and t2.SETID = t1.SETID
9 and d.SETID = t1.SETID
10 and t1.EFFDT = TO_DATE('01-01-1980', 'DD-MM-RRRR')
11 and t2.EFFDT = t1.EFFDT
12 and t1.tree_node = 'FRG'
13 and t2.tree_node_num between t1.tree_node_num and t1.tree_node_num_end
14* and t2.tree_node = d.deptid
This query will return all child departments under the parent department 'FRG'.
If the department tree is a summer tree, we can just join the PSTREELEAF. It is also mentioned in Grey Sparling's blog.
No comments:
Post a Comment