次の表を検討してください
create table EMPLOYEE
(
empno NUMBER not null,
ename VARCHAR2(100),
salary NUMBER,
hiredate DATE,
manager NUMBER
);
alter table EMPLOYEE add constraint PK_EMP primary key (EMPNO);
alter table EMPLOYEE
add constraint FK_MGR foreign key (MANAGER)
references EMPLOYEE (EMPNO);
これは自己ループテーブルです。つまり、ルートを除くすべての従業員にマネージャーがいます。
このテーブルで次のクエリを実行します。
すべての従業員がマネージャーよりも多くの給与を受け取っていることを確認しますか?
PS
構造のルートは 1 つだけです。
次のクエリを検討してください
SELECT LPAD(emp.ename, (LEVEL-1)*5 + LENGTH(emp.ename), ' ') AS "Hierarchy"
FROM employee emp
START WITH emp.manager IS NULL
CONNECT BY manager = PRIOR empno;
結果は次のようになります。
Alice
Alex
Abbey
Sarah
Jack
Bill
Jacob
Valencia
Bob
Babak
...
私は次のクエリを作成しました
SELECT LPAD(emp.ename, (LEVEL-1)*5 + LENGTH(emp.ename), ' ') AS "Hierarchy"
FROM employee emp
START WITH empno IN (SELECT empno FROM employee)
CONNECT BY PRIOR manager = empno;
これにより、従業員テーブル内のすべての従業員のサブツリーが下から上に作成されますが、目的の結果に到達するためにナビゲートする方法がわかりません!