Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

saya ingin menemukan semua nama manajer dan semua nama manajer mereka di Oracle SQL

Jika saya memahami Anda dengan benar, Anda hanya ingin memilih pengelola.

Contoh berikut didasarkan pada skema Scott.

Berikut adalah semua karyawan, bersama dengan manajer mereka (secara hierarkis) sehingga lebih mudah untuk menemukan manajer.

SQL> select lpad(' ', (level - 1) * 2) || ename ename
  2  from emp
  3  start with mgr is null
  4  connect by prior empno = mgr;

ENAME
------------------------------------------------------
KING              -- manager
  JONES           -- manager
    FORD          -- manager
      SMITH       -- employee
  BLAKE           -- manager
    ALLEN         -- employee
    WARD          -- employee
    MARTIN        -- employee
    TURNER        -- employee
    JAMES         -- employee
  CLARK           -- manager
    MILLER        -- employee

12 rows selected.

SQL>

Tambahan WHERE klausa mengembalikan manajer saja:

SQL> select lpad(' ', (level - 1) * 2) || ename ename
  2  from emp
  3  where empno in (select mgr from emp)
  4  start with mgr is null
  5  connect by prior empno = mgr;

ENAME
--------------------------------------------------------
KING
  JONES
    FORD
  BLAKE
  CLARK

SQL>

Mengganti apa sedang dipilih dengan SYS_CONNECT_BY_PATH , kita akan mendapatkan output yang berbeda:

SQL> select sys_connect_by_path(ename, ' / ') path
  2  from emp
  3  where empno in (select mgr from emp)
  4  start with mgr is null
  5  connect by prior empno = mgr;

PATH
----------------------------------------------------
 / KING
 / KING / JONES
 / KING / JONES / FORD
 / KING / BLAKE
 / KING / CLARK

SQL>

Atau, mengikuti langkah Anda, dengan penggabungan sendiri EMP tabel, kita mendapatkan

SQL> select m1.ename manager, m2.ename his_manager
  2  from emp m1 join emp m2 on m1.mgr = m2.empno
  3  where m1.empno in (select mgr from emp);

MANAGER    HIS_MANAGER
---------- -------------
FORD       JONES
CLARK      KING
BLAKE      KING
JONES      KING

SQL>

Pilih salah satu yang paling cocok untuk Anda. Saya yakin anggota lain akan menyarankan opsi lain.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hirarki penuh Oracle SQL diberikan simpul apa pun sebagai input

  2. Kesalahan java.sql.SQLException:ORA-00911:karakter tidak valid

  3. Apa yang harus dilakukan jika Anda tidak dapat membuka kesalahan file objek bersama saat menggunakan driver ODBC Oracle Easysoft versi OCI?

  4. Administrator ODBC Tidak Dapat Menemukan File Nama Oracle TNS

  5. Tidak dapat mencapai proc yang disimpan oracle menggunakan .Net EF(2.2) Pola repositori inti