Advertisement
ks_master

tehnike proba

Jan 27th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SELECT from rezervacija_dodatna_usluga_agregacija rdu inner join tip_dodatne_usluge tdu on rdu.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id
  2. where aranzman_id=1 and korisnik_id=1
  3.  
  4.  
  5.  
  6.  
  7. DOBIJAMO SUMU ZA DODATNE USLUGE
  8. SELECT  sum(cena) from rezervacija_dodatna_usluga_agregacija rdu
  9. inner join tip_dodatne_usluge tdu on rdu.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id
  10. where korisnik_id=1 and aranzman_id=1
  11.  
  12.  
  13. ZA DOBIJANJE BROJA TURISTA
  14. SELECT  broj_turista from rezervacija
  15. where korisnik_id=1 and aranzman_id=1
  16.  
  17.  
  18. ZA DOBIJANJE CENE ARANZMANA
  19.  
  20. SELECT  cena from aranzman
  21. where aranzman_id=1
  22.  
  23.  
  24.  
  25.  sum *(a.cena+ sum(tdu.cena))*r.broj_turista from rezervacija_dodatna_usluga_agregacija rez inner join tip_dodatne_usluge tdu on rez.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id,rezervacija r, aranzman a
  26. where rez.korisnik_id=1 and rez.aranzman_id=1 and r.korisnik_id=1 and r.aranzman_id=1 and a.aranzman_id=1
  27.  
  28.  
  29. DOBIJENE TRI TRAZENE KOLONE
  30.  
  31. SELECT tdu.cena, r.broj_turista, a.cena
  32. from rezervacija_dodatna_usluga_agregacija rez inner join tip_dodatne_usluge tdu on rez.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id,rezervacija r, aranzman a
  33. where rez.korisnik_id=1 and rez.aranzman_id=1 and r.korisnik_id=1 and r.aranzman_id=1 and a.aranzman_id=1
  34.  
  35.  
  36.  
  37. update rezervacija
  38. set ukupna_cena=(select ((sum(ukupna_cena_dodatnih)+200)*7) as ukupna_cena1
  39. from (SELECT tdu.cena as ukupna_cena_dodatnih, r.broj_turista as ukupan_broj_turista, a.cena as cena_aranzmana
  40. from rezervacija_dodatna_usluga_agregacija rez
  41. inner join tip_dodatne_usluge tdu on rez.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id,rezervacija r, aranzman a
  42. where rez.korisnik_id=1 and rez.aranzman_id=1 and r.korisnik_id=1 and r.aranzman_id=1 and a.aranzman_id=1) as new_table)
  43. where aranzman_id=1 and korisnik_id=1
  44.  
  45.  
  46.  
  47. KONACNO RESENJE
  48.  
  49. select (sum(ukupna_cena_dodatnih) + (select cena from aranzman where aranzman_id=1))*
  50. (select broj_turista from rezervacija where korisnik_id=1 and aranzman_id=1) as ukupna_cena
  51. from (SELECT tdu.cena as ukupna_cena_dodatnih
  52. from rezervacija_dodatna_usluga_agregacija rez
  53. inner join tip_dodatne_usluge tdu on rez.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id
  54. where rez.korisnik_id=1 and rez.aranzman_id=1) as new_table
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61. CREATE OR REPLACE PROCEDURE izracunaj_ukupnu_cenu(INT, INT)
  62. LANGUAGE plpgsql    
  63. AS $$
  64. BEGIN
  65.     UPDATE rezervacija
  66.     SET ukupna_cena =(SELECT (SUM(ukupna_cena_dodatnih) + (SELECT cena FROM aranzman WHERE aranzman_id=$1))*
  67. (SELECT broj_turista FROM rezervacija WHERE korisnik_id=$2 AND aranzman_id=$1) AS ukupna_cena
  68. FROM (SELECT tdu.cena AS ukupna_cena_dodatnih
  69. FROM rezervacija_dodatna_usluga_agregacija rez
  70. INNER JOIN tip_dodatne_usluge tdu ON rez.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id
  71. WHERE rez.korisnik_id=$2 AND rez.aranzman_id=$1) AS new_table)
  72.     WHERE korisnik_id=$2 and aranzman_id=$1;
  73. END;
  74. $$;
  75.  
  76. CALL izracunaj_ukupnu_cenu(1,1);
  77.  
  78.  
  79.  
  80.  
  81. CREATE OR REPLACE TRIGGER uk_cena_parametri
  82. BEFORE INSERT on rezervacija
  83. RETURNS TRIGGER AS
  84. $$
  85. BEGIN
  86.  rez.aranzman_id=NEW.aranzman_id;
  87.  rez.korisnik_id=NEW.korisnik_id
  88. END;
  89.     $$
  90. LANGUAGE 'plpgsql';
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98. CREATE OR REPLACE FUNCTION ukupna_cena()
  99. RETURNS TRIGGER AS
  100. $$
  101. BEGIN
  102.     NEW.ukupna_cena=izracunaj_ukupnu_cenu(NEW.aranzman_id, NEW.korisnik_id);
  103.     RETURN NEW;
  104.   END;
  105. $$
  106. language 'plpgsql'
  107.  
  108.  
  109. CREATE TRIGGER nakon_inserta_rezervacije_izracunaj_uc
  110. AFTER INSERT ON rezervacija
  111. for each row
  112. EXECUTE PROCEDURE ukupna_cena();
  113.  
  114.  
  115.  
  116.  
  117.  
  118. CREATE TRIGGER ukupna_cena_trigger
  119. AFTER INSERT
  120. ON rezervacija_dodatna_usluga_agregacija FOR EACH ROW
  121. BEGIN
  122.     CALL izracunaj_ukupnu_cenu (
  123.         NEW.aranzman_id,
  124.        NEW.korisnik_id
  125.     );
  126. END$$
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134. create or replace function uk_cena()
  135. returns trigger as
  136. $$
  137. BEGIN
  138.     CALL izracunaj_ukupnu_cenu (
  139.         NEW.aranzman_id,
  140.        NEW.korisnik_id
  141.     );
  142. END;
  143. $$
  144. language 'plpgsql'
  145.  
  146.  
  147. CREATE trigger uk_cena_trigger
  148. AFTER INSERT ON rezervacija_dodatna_usluga_agregacija
  149. FOR EACH ROW
  150. execute procedure uk_cena();
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157. select ukupno FROM
  158. (SELECT tdu.cena AS ukupna_cena_dodatnih
  159. FROM rezervacija_dodatna_usluga_agregacija rez
  160. INNER JOIN tip_dodatne_usluge tdu ON rez.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id
  161. WHERE rez.aranzman_id=2 AND rez.korisnik_id=3 limit 3) AS ukupno
  162. order by ukupno limit 2
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169. select korisnicko_ime, naziv, naziv_aranzmana from regular_dodatna_usluga r
  170. inner join korisnik k on r.korisnik_id=k.korisnik_id
  171. inner join tip_dodatne_usluge tdu on r.tip_dodatne_usluge_id=tdu.tip_dodatne_usluge_id
  172. inner join aranzman a on r.aranzman_id=a.aranzman_id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement