Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.20 KB | None | 0 0
  1. CREATE DATABASE Integralni2509 ON PRIMARY
  2. (
  3.     NAME = 'Integralni2509',
  4.     FILENAME = 'C:\BP2\Integralni2509.mdf',
  5.     SIZE = 5MB,
  6.     MAXSIZE = UNLIMITED,
  7.     FILEGROWTH = 25%
  8. )
  9. LOG ON
  10. (
  11.     NAME = 'Integralni2509_LOG',
  12.     FILENAME = 'C:\BP2\Integralni2509.ldf'
  13. )
  14.  
  15. USE Integralni2509;
  16. GO
  17.  
  18.  
  19. --1
  20. CREATE TABLE Klijenti (
  21.     KlijentID INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
  22.     Ime NVARCHAR(50) NOT NULL,
  23.     Prezime NVARCHAR(50) NOT NULL,
  24.     Drzava NVARCHAR(50) NOT NULL,
  25.     Grad NVARCHAR(50) NOT NULL,
  26.     Email NVARCHAR(50) NOT NULL,
  27.     Telefon NVARCHAR(50) NOT NULL
  28. );
  29.  
  30. CREATE TABLE Izleti (
  31.     IzletID INT NOT NULL PRIMARY KEY IDENTITY(1, 1),
  32.     Sifra NVARCHAR(10) NOT NULL,
  33.     Naziv NVARCHAR(100) NOT NULL,
  34.     DatumPolaska DATE NOT NULL,
  35.     DatumPovratka DATE NOT NULL,
  36.     Cijena DECIMAL(7, 2) NOT NULL,
  37.     Opis NTEXT
  38. );
  39.  
  40. CREATE TABLE Prijave (
  41.     IzletID INT NOT NULL FOREIGN KEY (IzletID) REFERENCES Izleti(IzletID),
  42.     KlijentID INT NOT NULL FOREIGN KEY (KlijentID) REFERENCES Klijenti(KlijentID),
  43.     Datum DATETIME NOT NULL,
  44.     BrojOdraslih INT NOT NULL,
  45.     BrojDjece INT NOT NULL,
  46.     CONSTRAINT FUCK PRIMARY KEY(IzletID, KlijentID)
  47. );
  48.  
  49. --2
  50. /*
  51. iii.    CountryRegion (Name) -> Drzava
  52. iv. Addresss (City) -> Grad
  53. v.  EmailAddress (EmailAddress)  -> Email (Između imena i prezime staviti tačku)
  54. vi. PersonPhone (PhoneNumber) -> Telefon
  55. */
  56. USE Integralni2509;
  57. GO
  58.  
  59. INSERT INTO Klijenti
  60. SELECT DISTINCT P.FirstName, P.LastName, SP.Name, A.City, EA.EmailAddress, PP.PhoneNumber
  61. FROM AdventureWorks2017.Person.CountryRegion AS CR JOIN AdventureWorks2017.Person.StateProvince AS SP
  62.     ON CR.CountryRegionCode = SP.CountryRegionCode JOIN AdventureWorks2017.Person.Address AS A
  63.     ON SP.StateProvinceID = A.AddressID JOIN AdventureWorks2017.Sales.SalesOrderHeader AS SOH
  64.     ON A.AddressID = SOH.ShipToAddressID JOIN AdventureWorks2017.Sales.CreditCard AS CC
  65.     ON SOH.CreditCardID = CC.CreditCardID JOIN AdventureWorks2017.Sales.PersonCreditCard AS PCC
  66.     ON CC.CreditCardID = PCC.CreditCardID JOIN AdventureWorks2017.Person.Person AS P
  67.     ON PCC.BusinessEntityID = P.BusinessEntityID JOIN AdventureWorks2017.Person.EmailAddress AS EA
  68.     ON P.BusinessEntityID = EA.BusinessEntityID JOIN AdventureWorks2017.Person.PersonPhone AS PP
  69.     ON P.BusinessEntityID = PP.BusinessEntityID
  70.  
  71.  
  72. INSERT INTO Izleti(Sifra, Naziv, DatumPolaska, DatumPovratka, Cijena)
  73. VALUES
  74.     ('AOIF', 'Izlet 1', '19970624', '20080604', 25.2),
  75.     ('AOIH', 'Izlet 2', '19980624', '20090406', 2235.2),
  76.     ('AOIG', 'Izlet 3', '19990624', '20190406', 252.2);
  77.  
  78. GO
  79. CREATE PROCEDURE UnosPrijave
  80.     @IzletID INT,
  81.     @KlijentID INT,
  82.     @Odrasli INT,
  83.     @Djeca INT
  84. AS
  85. INSERT INTO Prijave
  86. VALUES (@IzletID, @KlijentID, GETDATE(), @Odrasli, @Djeca)
  87.  
  88. SELECT *
  89. FROM Izleti
  90.  
  91. SELECT *
  92. FROM Klijenti
  93.  
  94. SELECT *
  95. FROM Prijave
  96.  
  97. EXEC UnosPrijave @IzletID = 4, @KlijentID = 1, @Odrasli = 2, @Djeca = 50
  98.  
  99. CREATE UNIQUE INDEX UNQ_Email
  100. ON Klijenti(Email)
  101.  
  102. UPDATE Izleti
  103. SET Cijena = Cijena * 0.9
  104. WHERE IzletID IN (
  105.     SELECT I.IzletID
  106.     FROM Izleti AS I JOIN Prijave AS P
  107.         ON I.IzletID = P.IzletID
  108.     GROUP BY I.IzletID
  109.     HAVING COUNT(I.IzletID) < 3
  110. );
  111.  
  112. /*Kreirati view (pogled) koji prikazuje podatke o izletu: šifra, naziv, datum polaska, datum
  113. povratka i cijena, te ukupan broj prijava na izletu, ukupan broj putnika, ukupan broj odraslih
  114. i ukupan broj djece. Obavezno prilagoditi format datuma (dd.mm.yyyy).*/
  115. GO
  116. CREATE VIEW [VIEW]
  117. AS
  118. SELECT I.Sifra, I.Naziv, I.DatumPolaska, I.DatumPovratka, I.Cijena, COUNT(P.IzletID) AS Total, SUM(P.BrojOdraslih) AS TOT
  119. FROM Izleti AS I JOIN Prijave AS P
  120.     ON I.IzletID = P.IzletID
  121. GROUP BY I.Sifra, I.Naziv, I.DatumPolaska, I.DatumPovratka, I.Cijena
  122.  
  123. SELECT *
  124. FROM [VIEW];
  125.  
  126. /*7.    Kreirati uskladištenu proceduru koja će na osnovu unesene šifre izleta prikazivati zaradu od izleta
  127. i to sljedeće kolone: naziv izleta, zarada od odraslih, zarada od djece, ukupna zarada. Popust za djecu
  128. se obračunava 50% na ukupnu cijenu za djecu. Obavezno testirati ispravnost kreirane procedure.*/
  129. GO
  130. CREATE PROCEDURE Sifre
  131.     @Sifra nvarchar(50)
  132. AS
  133.     SELECT I.Naziv, SUM(P.BrojOdraslih) * I.Cijena
  134.     FROM Izleti AS I JOIN Prijave AS P ON I.IzletID = P.IzletID
  135.     WHERE I.Sifra = @Sifra
  136.     GROUP BY I.Naziv, I.Cijena
  137.  
  138. GO
  139. EXECUTE Sifre 'AOIF'
  140.  
  141. SELECT *
  142. FROM Prijave
  143. FROM Izleti
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement