在sql CTE查询

时间:2015-12-11 11:26:57

标签: sql oracle common-table-expression

我有如下查询,

with c(EMP_ID,MANAGER_ID,EMP_NAME,REPORT_LEVEL) as 
(
select  e.EMP_ID
,e.MANAGER_ID
,e.EMP_NAME
, 0 REPORT_LEVEL 
from    EMPLOYEE e 
where   e.EMP_NAME like 'Raj%' 
union all
select  child.EMP_ID
,child.MANAGER_ID
,child.EMP_NAME
,parent.REPORT_LEVEL +1
from    EMPLOYEE child 
join    c parent
on child.MANAGER_ID = parent.EMP_ID            
)
select  * from    c

我想再加入一个表(时间表),在该表中,单个empID将有多个记录。每行代表该员工的时间表条目,它将包含时间表状态,小时,日期。

因此,我想加入时间表表格以获取层次结构中所有员工的所有时间表状态。 我无法在此查询中加入时间表表格以获得所需的结果。

创建表员工

   EMP_ID varchar2(20)PRIMARY KEY NOT NULL,
   EMP_NAME varchar2(100),
   EMP_EMAIL varchar2(100),
   MANAGER_ID varchar2(20),
);

创建表时间表

   ID decimal(22,0)PRIMARY KEY NOT NULL,
   WK_END_DT时间戳NOT NULL,
   EMP_ID varchar2(10)NOT NULL,
   STATUS varchar2(20)NOT NULL,

);

enter image description here

1 个答案:

答案 0 :(得分:0)

它在同一个表上基于父子关系称为自连接。

Blockquote
  

notificationManager.notify(intent.getIntExtra(NOTIFICATION_ID, 0), notification);