Advertisement
adnanj

DBMS - Rješenje integralnog ispita od 14. 9. 2015. god.

Sep 17th, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.95 KB | None | 0 0
  1. /*
  2.    DBMS praktični ispit – Integralni (14.09.2015) - Rješenje
  3.    Postavku ispita možete preuzeti sa: https://www.sendspace.com/file/5hvz0l
  4.    Prilikom rješavanja ispita korištena je starija verzija baze AdventureWorks (2012, a ne 2014), s obzirom da nema značajnih razlika
  5.    između baza - rezultati su identični.
  6. */
  7.  
  8. -- 1. kvalifikacijski
  9.  
  10. USE AdventureWorks2012
  11.  
  12. SELECT P.FirstName AS 'Ime',
  13.        P.LastName AS 'Prezime',
  14.        SUM(SOH.TotalDue) AS 'Ukupno utrošeno'
  15. FROM Sales.Customer AS C JOIN Person.Person AS P
  16.      ON C.PersonID = P.BusinessEntityID JOIN Sales.SalesOrderHeader AS SOH
  17.      ON C.CustomerID = SOH.CustomerID
  18. WHERE DATEPART(MONTH, SOH.OrderDate) = 7
  19. GROUP BY P.FirstName, P.LastName
  20. HAVING SUM(SOH.TotalDue) > 200000
  21. ORDER BY [Ukupno utrošeno] DESC
  22.  
  23. -- 2. kvalifikacijski
  24.  
  25. USE AdventureWorks2012
  26.  
  27. SELECT P.FirstName AS 'Ime',
  28.        P.LastName AS 'Prezime',
  29.        CC.CardType AS 'Tip kartice',
  30.        CC.CardNumber AS 'Broj kartice',
  31.        SUM(SOH.TotalDue) AS 'Ukupno plaćeno'
  32. FROM Person.Person AS P JOIN Sales.PersonCreditCard AS PCC
  33.      ON P.BusinessEntityID = PCC.BusinessEntityID JOIN Sales.CreditCard AS CC
  34.      ON PCC.CreditCardID = CC.CreditCardID JOIN Sales.SalesOrderHeader AS SOH
  35.      ON CC.CreditCardID = SOH.CreditCardID
  36. GROUP BY P.FirstName, P.LastName, CC.CardType, CC.CardNumber
  37. HAVING COUNT(SOH.CreditCardID) > 20
  38.  
  39. --=========================================================================================--
  40.  
  41. -- 1. zadatak
  42.  
  43. CREATE DATABASE IB130094
  44.  
  45. -- 2. zadatak
  46.  
  47. USE AdventureWorks2012
  48.  
  49. SELECT P.FirstName AS 'Ime',
  50.        P.LastName AS 'Prezime',
  51.        P.Title AS 'Titula',
  52.        E.Gender AS 'Spol',
  53.        EA.EmailAddress AS 'Email'
  54. INTO IB130094.dbo.Predavaci
  55. FROM HumanResources.Employee AS E JOIN Person.Person AS P
  56.      ON E.BusinessEntityID = P.BusinessEntityID JOIN Person.EmailAddress AS EA
  57.      ON P.BusinessEntityID = EA.BusinessEntityID
  58. WHERE P.Title IS NOT NULL
  59.  
  60. -- 3. zadatak
  61.  
  62. USE IB130094
  63.  
  64. ALTER TABLE Predavaci
  65. ADD PredavacID INT NOT NULL IDENTITY(1,1) PRIMARY KEY
  66.  
  67. CREATE TABLE LoginPodaci
  68. (
  69.     PredavacID INT NOT NULL PRIMARY KEY REFERENCES Predavaci(PredavacID),
  70.     KorisnickoIme NVARCHAR(20) NOT NULL UNIQUE,
  71.     Lozinka NVARCHAR(20) NOT NULL
  72. )
  73.  
  74. -- 4. zadatak
  75.  
  76. USE AdventureWorks2012
  77.  
  78. INSERT INTO IB130094.dbo.LoginPodaci(PredavacID, KorisnickoIme, Lozinka)
  79. SELECT PP.PredavacID AS 'PredavacID',
  80.        SUBSTRING(EA.EmailAddress, 1, CHARINDEX('@', EA.EmailAddress)-1) AS 'KorisnickoIme',
  81.        LEFT(PW.PasswordHash, 8) AS 'Lozinka'
  82. FROM Person.Person AS P JOIN Person.EmailAddress AS EA
  83.      ON P.BusinessEntityID = EA.BusinessEntityID JOIN IB130094.dbo.Predavaci AS PP
  84.      ON EA.EmailAddress = PP.Email JOIN Person.[Password] AS PW
  85.      ON P.BusinessEntityID = PW.BusinessEntityID
  86.  
  87. -- 5. zadatak
  88.  
  89. USE IB130094
  90.  
  91. GO
  92. CREATE VIEW view_Predavaci
  93. AS
  94. SELECT P.*, LP.KorisnickoIme, LP.Lozinka
  95. FROM Predavaci AS P JOIN LoginPodaci AS LP
  96.      ON P.PredavacID = LP.PredavacID
  97. GO
  98.  
  99. SELECT * FROM view_Predavaci
  100.  
  101. -- 6. zadatak
  102.  
  103. GO
  104. CREATE PROCEDURE usp_Predavaci_SelectByKorisnickoIme
  105. (
  106.     @KorisnickoIme NVARCHAR(20)
  107. )
  108. AS
  109. SELECT * FROM view_Predavaci
  110. WHERE KorisnickoIme = @KorisnickoIme
  111. GO
  112.  
  113. usp_Predavaci_SelectByKorisnickoIme 'hung-fu0'
  114.  
  115. -- 7. zadatak
  116.  
  117. GO
  118. CREATE PROCEDURE usp_Predavaci_Insert
  119. (
  120.     @Ime NVARCHAR(50),
  121.     @Prezime NVARCHAR(50),
  122.     @Titula NVARCHAR(8),
  123.     @Spol NCHAR(1),
  124.     @Email NVARCHAR(50),
  125.     @KorisnickoIme NVARCHAR(20),
  126.     @Lozinka NVARCHAR(20)
  127. )
  128. AS
  129. INSERT INTO Predavaci(Ime, Prezime, Titula, Spol, Email)
  130.        VALUES(@Ime, @Prezime, @Titula, @Spol, @Email)
  131. INSERT INTO LoginPodaci(PredavacID, KorisnickoIme, Lozinka)
  132.        VALUES(@@IDENTITY, @KorisnickoIme, @Lozinka)
  133. GO
  134.  
  135. usp_Predavaci_Insert 'Admir', 'Šehidić', 'asistent', 'M', 'admir@edu.fit.ba', 'asehidic', 'testnalozinka'
  136. usp_Predavaci_Insert 'Denis', 'Mušić', 'profesor', 'M', 'denis@fit.ba', 'denis', 'drugalozinka'
  137.  
  138.  
  139. SELECT * FROM view_Predavaci
  140.  
  141. -- 8. zadatak
  142.  
  143. GO
  144. CREATE PROCEDURE usp_Predavaci_Update
  145. (
  146.     @PredavacID INT,
  147.     @Ime NVARCHAR(50),
  148.     @Prezime NVARCHAR(50),
  149.     @Titula NVARCHAR(8),
  150.     @Spol NCHAR(1),
  151.     @Email NVARCHAR(50),
  152.     @Lozinka NVARCHAR(20)
  153. )
  154. AS
  155. UPDATE Predavaci SET Ime = @Ime,
  156.              Prezime = @Prezime,
  157.              Titula = @Titula,
  158.                  Spol = @Spol,
  159.              Email = @Email
  160. WHERE PredavacID = @PredavacID
  161. UPDATE LoginPodaci SET Lozinka = @Lozinka
  162. WHERE PredavacID = @PredavacID
  163. GO
  164.  
  165. usp_Predavaci_Update 9, 'Admir', 'Šehidić', 'asis.', 'M', 'admir@fit.ba', 'drugalozinka'
  166.  
  167. SELECT * FROM view_Predavaci
  168.  
  169. -- 9. zadatak
  170.  
  171. GO
  172. CREATE PROCEDURE usp_Predavaci_Delete
  173. (
  174.     @PredavacID INT
  175. )
  176. AS
  177. DELETE FROM LoginPodaci
  178. WHERE PredavacID = @PredavacID
  179. DELETE FROM Predavaci
  180. WHERE PredavacID = @PredavacID
  181. GO
  182.  
  183. usp_Predavaci_Delete 10
  184.  
  185. -- 10. zadatak
  186.  
  187. GO
  188. CREATE TRIGGER tr_Predavaci_Delete
  189. ON LoginPodaci INSTEAD OF DELETE
  190. AS
  191. PRINT 'Brisanje predavača je zabranjeno!'
  192. ROLLBACK;
  193. GO
  194.  
  195. DELETE FROM Predavaci
  196. WHERE PredavacID = 6
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement