Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL层次结构查询_Sql_Database_Oracle11g - Fatal编程技术网

SQL层次结构查询

SQL层次结构查询,sql,database,oracle11g,Sql,Database,Oracle11g,此查询的输出: SELECT ppse.SUBORDINATE_POSITION_ID child_position_id ,ppse.PARENT_POSITION_ID manger_position_id ,b.person_id FROM per_pos_structure_elements_v ppse ,APPS.xxkpc_hr_personnel_v2_mv b WHERE b.position_id(+)

此查询的输出:

SELECT ppse.SUBORDINATE_POSITION_ID child_position_id
               ,ppse.PARENT_POSITION_ID manger_position_id
               ,b.person_id
FROM per_pos_structure_elements_v ppse
      ,APPS.xxkpc_hr_personnel_v2_mv  b
WHERE b.position_id(+) = ppse.SUBORDINATE_POSITION_ID

AND ppse.POS_STRUCTURE_VERSION_ID =64
AND ppse.PARENT_POSITION_ID=12493

12493在第一个查询中是父查询,在第二个查询中是子查询,因此我需要删除所有第三列为空的行&不是子查询的父查询,因为在第二个查询中,他是子查询的父查询,但要删除第一个查询中的最后3行,请尝试以下操作

12604   12493   400 
12605   12493   108 
13644   12493   37897   
12752   12493   18  
13643   12493       
13642   12493       
13641   12493       



SELECT ppse.SUBORDINATE_POSITION_ID child_position_id
               ,ppse.PARENT_POSITION_ID manger_position_id
               ,b.person_id
FROM per_pos_structure_elements_v ppse
              ,APPS.xxkpc_hr_personnel_v2_mv  b
WHERE b.position_id(+) = ppse.SUBORDINATE_POSITION_ID

AND ppse.POS_STRUCTURE_VERSION_ID =64
AND ppse.PARENT_POSITION_ID=12504


12514   12504   449
12483   12504   450
12487   12504   456
12497   12504   156
12889   12504   168
12493   12504   

它不使用PARENT_POSITION_ID=12504,它将删除12493的行,该行是child'stry的父行,并从最后一条语句中删除not。如下所示。。。ppse.substance\u POSITION\u ID在从每个位置结构元素中选择substance\u POSITION\u ID
SELECT ppse.SUBORDINATE_POSITION_ID child_position_id
           ,ppse.PARENT_POSITION_ID manger_position_id
           ,b.person_id
FROM per_pos_structure_elements_v ppse
  ,APPS.xxkpc_hr_personnel_v2_mv  b
WHERE b.position_id(+) = ppse.SUBORDINATE_POSITION_ID
AND b.type(+) = 'KPC Employee'
AND ppse.POS_STRUCTURE_VERSION_ID =64
AND ppse.PARENT_POSITION_ID=12493
AND 
(b.person_id!=null OR 
 ppse.SUBORDINATE_POSITION_ID in
             (SELECT SUBORDINATE_POSITION_ID from per_pos_structure_elements_v))