Oracle SQL中的连接方式
假设我们有下面的表格Oracle SQL中的连接方式,sql,oracle,hierarchical-query,Sql,Oracle,Hierarchical Query,假设我们有下面的表格 create table Employee( 2 EMPNO NUMBER(3), 3 ENAME VARCHAR2(15 BYTE), 4 HIREDATE DATE, 5 ORIG_SALARY NUMBER(6), 6 CURR_SALARY NUMBER(6), 7 REGION VARCHAR2(1 BYTE), 8 MANAGER
create table Employee(
2 EMPNO NUMBER(3),
3 ENAME VARCHAR2(15 BYTE),
4 HIREDATE DATE,
5 ORIG_SALARY NUMBER(6),
6 CURR_SALARY NUMBER(6),
7 REGION VARCHAR2(1 BYTE),
8 MANAGER_ID NUMBER(3)
9 )
及
create table job (
2 EMPNO NUMBER(3),
3 jobtitle VARCHAR2(20 BYTE)
4 )
5 /
我对下面的查询有兴趣
SELECT empno, manager_id, ename
2 FROM employee
3 START WITH empno = 1
4 CONNECT BY PRIOR empno = manager_id;
据我所知,此代码从employee中选择empno
,manager\u id
,ename
,它从empno=1
的此行开始选择,但无法理解此行的作用:
CONNECT BY PRIOR empno = manager_id;
这是否等同于:
where empno=manager_id?
查询是递归的,它从雇员1(可能是CEO)开始,然后递归地打印他的所有下属,然后是他们的所有下属,依此类推(直到所有雇员都打印出来) 关于“开始”和“连接方式”,可以找到一个很好的解释 这将产生递归。属于下一个较低层次的所有记录都将返回。这将返回所有经理及其各自下属从上到下的层次结构
30 (manager_id)
12
5 (manager_id)
1
7
20 (manager_id)
15
10
所以,我怎么能猜到我是否需要这样的代码来选择某个东西呢?只要你想得到某个具有父子关系的东西。
30 (manager_id)
12
5 (manager_id)
1
7
20 (manager_id)
15
10