Advertisement
Guest User

zpusob 2

a guest
Apr 19th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.32 KB | None | 0 0
  1. INSERT INTO OBJ_EMPLOYEES (employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct)
  2.   SELECT employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct FROM EMPLOYEES;
  3.   -- zde nemuzeme nastavit vazbu na oddeleni a managera, protoze v obj. tabulkach jeste nemusi neexistovat
  4.  
  5. INSERT INTO OBJ_DEPARTMENTS obj_dept (department_id, department_name, manager_ref) -- zde uz muzeme nastavit vazbu na managera
  6.   SELECT dept.department_id, dept.department_name, (
  7.             SELECT REF(obj_manager) -- chceme referenci na objektoveho managera (zamestnance)
  8.             FROM OBJ_EMPLOYEES obj_manager -- ovsem vazby oddeleni->manager jsou podchyceny pouze v puvodnich relacnich tabulkach
  9.             WHERE obj_manager.employee_id = dept.manager_id -- proto v relacni tabulce dohledame spravneho managera a prave toho zde vybereme
  10.          ) FROM DEPARTMENTS dept;
  11.  
  12. UPDATE OBJ_EMPLOYEES obj_emp
  13.   SET obj_emp.department_ref = -- nastavime referenci na oddeleni pro kazdy zaznam v tabulce OBJ_EMPLOYEES
  14.     (SELECT REF(obj_dept)  -- chceme referenci na objektove oddeleni
  15.       FROM OBJ_DEPARTMENTS obj_dept -- ovsem vazby zamestnance->oddeleni jsou podchyceny pouze v puvodnich relacnich tabulkach
  16.       JOIN DEPARTMENTS dept ON obj_dept.department_id = dept.department_id -- musime tedy dohledat odpovidajiciho relacni oddeleni
  17.       JOIN EMPLOYEES emp ON emp.department_id = dept.department_id -- do ktere patri "nejaky" zamestnanec
  18.       WHERE emp.employee_id = obj_emp.employee_id  -- ovsem konkretne prave ten zamestnanec, kteremu prave referenci nastavujeme
  19.       ),
  20.     obj_emp.manager_ref = -- dale nastavime referenci na managera pro kazdy zaznam v tabulce OBJ_EMPLOYEES
  21.     (SELECT REF(obj_manager)  -- chceme referenci na objektoveho zamestnance
  22.         FROM OBJ_EMPLOYEES obj_manager -- ovsem vazby zamestnanec->manager jsou podchyceny pouze v puvodnich relacnich tabulkach
  23.         JOIN EMPLOYEES manager ON obj_manager.employee_id = manager.employee_id -- musime tedy dohledat odpovidajiciho relacniho managera
  24.         JOIN EMPLOYEES emp ON emp.manager_id = manager.employee_id -- ktery je managerem "nejakeho" zamestnance emp
  25.         WHERE emp.employee_id = obj_emp.employee_id -- ovsem konkretne prave toho zamestnance, kteremu prave referenci nastavujeme
  26.         );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement