Advertisement
Guest User

DB6

a guest
Jan 18th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.52 KB | None | 0 0
  1. CREATE TYPE person AS OBJECT(id NUMBER(5), name VARCHAR2(30), telefonnummer VARCHAR2(30)) NOT FINAL;
  2. CREATE TYPE consultant UNDER person(handynummer VARCHAR2(30), ref_calls refTab_calls);
  3. CREATE TYPE client UNDER person(account VARCHAR2(30), ref_calls refTab_calls);
  4.  
  5. CREATE TABLE tab_consultant OF consultant NESTED TABLE ref_calls STORE AS ntab_con_calls;
  6. CREATE TABLE tab_client OF client NESTED TABLE ref_calls STORE AS ntab_cli_calls;
  7.  
  8. CREATE TYPE refTab_client AS TABLE OF REF client;
  9. CREATE TYPE refTab_consultant AS TABLE OF REF consultant;
  10.  
  11. -------------------------------------------------------------------------------------------------------------
  12.  
  13. INSERT INTO tab_consultant VALUES(1, 'Maria', '76543457', '0141543453', refTab_calls());
  14. INSERT INTO tab_consultant VALUES(2, 'Albert', '456767', '017456788', refTab_calls());
  15. INSERT INTO tab_consultant VALUES(3, 'Christina', '1209788', '01123432345', refTab_calls());
  16. INSERT INTO tab_consultant VALUES(4, 'Jessica', '7975461', '019087609', refTab_calls());
  17. INSERT INTO tab_consultant VALUES(5, 'Max', '554779', '01678345678', refTab_calls());
  18. INSERT INTO tab_consultant VALUES(6, 'Moritz', '123422', '0112245534', refTab_calls());
  19.  
  20. INSERT INTO tab_client VALUES(7, 'Josefina', '76543457', '014567846', refTab_calls());
  21. INSERT INTO tab_client VALUES(8, 'Denise', '76543457', '0100098765456', refTab_calls());
  22. INSERT INTO tab_client VALUES(9, 'Vanessa', '76543457', '0114676567', refTab_calls());
  23. INSERT INTO tab_client VALUES(10, 'Julia', '76543457', '01087658987', refTab_calls());
  24. INSERT INTO tab_client VALUES(11, 'Dennis', '76543457', '01666676546', refTab_calls());
  25. INSERT INTO tab_client VALUES(12, 'Laura', '76543457', '01097655678', refTab_calls());
  26.  
  27. -------------------------------------------------------------------------------------------------------------
  28.  
  29. CREATE OR REPLACE TYPE ref_calls AS TABLE OF REF calls;
  30.  
  31. CREATE TYPE calls AS OBJECT(id NUMBER, day VARCHAR2(10), time VARCHAR2(10), duration NUMBER,
  32. ref_consultant REF consultant, ref_client REF client);
  33.  
  34. CREATE TABLE tab_calls OF calls;
  35.  
  36. INSERT INTO tab_calls VALUES(1, '10.12.2017', '12:10', 20, (SELECT REF(t) FROM tab_consultant t WHERE t.id=1),
  37. (SELECT REF(c) FROM tab_client c WHERE c.id=7));
  38.  
  39. INSERT INTO tab_calls VALUES(2, '16.10.2017', '13:50', 40, (SELECT REF(t) FROM tab_consultant t WHERE t.id=2),
  40. (SELECT REF(c) FROM tab_client c WHERE c.id=8));
  41.  
  42. INSERT INTO tab_calls VALUES(3, '20.11.2017', '17:25', 10, (SELECT REF(t) FROM tab_consultant t WHERE t.id=3),
  43. (SELECT REF(c) FROM tab_client c WHERE c.id=9));
  44.  
  45. INSERT INTO tab_calls VALUES(4, '22.11.2017', '10:40', 5, (SELECT REF(t) FROM tab_consultant t WHERE t.id=4),
  46. (SELECT REF(c) FROM tab_client c WHERE c.id=10));
  47.  
  48. INSERT INTO tab_calls VALUES(5, '09.06.2017', '11:11', 30, (SELECT REF(t) FROM tab_consultant t WHERE t.id=5),
  49. (SELECT REF(c) FROM tab_client c WHERE c.id=11));
  50.  
  51. INSERT INTO tab_calls VALUES(6, '07.07.2017', '19:30', 25, (SELECT REF(t) FROM tab_consultant t WHERE t.id=6),
  52. (SELECT REF(c) FROM tab_client c WHERE c.id=12));
  53.  
  54. -------------------------------------------------------------------------------------------------------------
  55.  
  56. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_client c WHERE c.id=7) SELECT REF(t) FROM tab_calls t WHERE t.id=1;
  57. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_consultant c WHERE c.id=1) SELECT REF(t) FROM tab_calls t WHERE t.id=1;
  58.  
  59. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_client c WHERE c.id=8) SELECT REF(t) FROM tab_calls t WHERE t.id=2;
  60. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_consultant c WHERE c.id=2) SELECT REF(t) FROM tab_calls t WHERE t.id=2;
  61.  
  62. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_client c WHERE c.id=9) SELECT REF(t) FROM tab_calls t WHERE t.id=3;
  63. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_consultant c WHERE c.id=3) SELECT REF(t) FROM tab_calls t WHERE t.id=3;
  64.  
  65. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_client c WHERE c.id=10) SELECT REF(t) FROM tab_calls t WHERE t.id=4;
  66. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_consultant c WHERE c.id=4) SELECT REF(t) FROM tab_calls t WHERE t.id=4;
  67.  
  68. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_client c WHERE c.id=11) SELECT REF(t) FROM tab_calls t WHERE t.id=5;
  69. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_consultant c WHERE c.id=5) SELECT REF(t) FROM tab_calls t WHERE t.id=5;
  70.  
  71. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_client c WHERE c.id=12) SELECT REF(t) FROM tab_calls t WHERE t.id=6;
  72. INSERT INTO TABLE(SELECT c.ref_calls FROM tab_consultant c WHERE c.id=6) SELECT REF(t) FROM tab_calls t WHERE t.id=6;
  73.  
  74. -------------------------------------------------------------------------------------------------------------
  75. 3. AUFGABE:
  76.  
  77. SELECT tab_client.NAME, ref_calls.duration, 'CLIENT' AS TYP FROM tab_client tab_client
  78. INNER JOIN(SELECT t.*, value(t).client.id AS cli_id, value(t).consultant.id AS con_id FROM tab_call t)
  79. ref_calls ON calls.cli_id=tab_client.id
  80. UNION
  81. SELECT tab_consultant.NAME, calls.duration, 'CONSULTANT' AS TYP FROM tab_consultant tab_consultant
  82. INNER JOIN(SELECT t.*, value(t).client.id AS cli_id, value(t).consultant.id AS con_id FROM tab_call t)
  83. calls ON calls.con_id=tab_consultant.id;
  84.  
  85.  
  86.  
  87. SELECT DEREF(t.client).name AS client, DEREF(t.consultant).name AS consultant, t.duration FROM Tab_Call t;
  88.  
  89. SELECT DISTINCT DEREF(t.consultant).name consultant, SUM(t.duration) FROM Tab_Call t GROUP BY DEREF(t.consultant).name;
  90.  
  91. SELECT * FROM tab_call;
  92.  
  93. SELECT t.*, value(t).client.id as cli_id, value(t).consultant.id AS con_id FROM tab_call t;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement