Advertisement
Guest User

Untitled

a guest
Jun 10th, 2018
1,081
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.04 KB | None | 0 0
  1. --DROP TABLES--
  2. --=====================================================--
  3. DROP TABLE IF EXISTS car_status
  4. DROP TABLE IF EXISTS Car
  5. DROP TABLE IF EXISTS Customer_Adress
  6. DROP TABLE IF EXISTS Employee_Adress
  7. DROP TABLE IF EXISTS EmployeeOrders
  8. DROP TABLE IF EXISTS Employee
  9. DROP TABLE IF EXISTS Products
  10. DROP TABLE IF EXISTS Drink
  11. DROP TABLE IF EXISTS Pizza
  12. DROP TABLE IF EXISTS Sauce
  13. DROP TABLE IF EXISTS size
  14. DROP TABLE IF EXISTS Orders
  15. DROP TABLE IF EXISTS Order_Type
  16. DROP TABLE IF EXISTS Payment_Method
  17. DROP TABLE IF EXISTS Customer
  18.  
  19. --DROP FUNCTIONS--
  20. --=====================================================--
  21. DROP FUNCTION IF EXISTS znak
  22. DROP FUNCTION IF EXISTS checkEmail
  23.  
  24. --DROP TRIGGERS--
  25. --=====================================================--
  26. DROP TRIGGER IF EXISTS Format_Number_E
  27. DROP TRIGGER IF EXISTS Format_Number_C
  28. DROP TRIGGER IF EXISTS Order_PriceT
  29. DROP TRIGGER IF EXISTS proc_OFF_BIG_PIZZA
  30. DROP TRIGGER IF EXISTS email_checkT
  31. DROP TRIGGER IF EXISTS exists_pizza
  32. DROP TRIGGER IF EXISTS exists_drink
  33. DROP TRIGGER IF EXISTS exists_sauce
  34.  
  35. --DROP PROCEDURES--
  36. --=====================================================--
  37. DROP PROCEDURE IF EXISTS CREATE_ORDER
  38. DROP PROCEDURE IF EXISTS Add_Product
  39. DROP PROCEDURE IF EXISTS give_take_car
  40. DROP PROCEDURE IF EXISTS salary_up
  41. DROP PROCEDURE IF EXISTS Show_Employee_Orders
  42.  
  43. --DROP VIEW--
  44. --=====================================================--
  45. DROP VIEW IF EXISTS number
  46. DROP VIEW IF EXISTS Employee_INFO
  47. DROP VIEW IF EXISTS Menu_pizza
  48. DROP VIEW IF EXISTS pizza_popularity
  49. DROP VIEW IF EXISTS drink_popularity
  50. DROP VIEW IF EXISTS sauce_popularity
  51. DROP VIEW IF EXISTS ORDER_INFO
  52. DROP VIEW IF EXISTS car_info
  53. DROP VIEW IF EXISTS DELIVERY_POPULARITY_CITY
  54. DROP VIEW IF EXISTS Monthly_Income
  55. DROP VIEW IF EXISTS BELOW_AVG
  56. GO
  57. --==========================================================================================================--
  58. --TABLES--
  59.  
  60. --EMPLOYEE TBALES--
  61. --==========================================================--
  62.  
  63. --EMPLOYEE--
  64. CREATE TABLE dbo.Employee (
  65. Employee_ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  66. Name varchar(100) NOT NULL,
  67. Surname varchar(100) NOT NULL,
  68. Birthday date NOT NULL DEFAULT GETDATE(),
  69. Job_position varchar(100) NOT NULL,
  70. Date_hired date NOT NULL DEFAULT GETDATE(),
  71. PESEL varchar(11) NOT NULL UNIQUE CHECK(LEN(pesel) = 11),
  72. Salary MONEY NOT NULL DEFAULT (0),
  73. E_mail varchar(30) NULL DEFAULT (NULL),
  74. Phone_Nr varchar(14) NULL DEFAULT (NULL),
  75. );
  76.  
  77. --EMPLOYEE ADRESS--
  78. CREATE TABLE dbo.Employee_Adress(
  79. Adress_ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  80. Country varchar(100) NOT NULL DEFAULT (NULL),
  81. City varchar(100) NOT NULL DEFAULT (NULL),
  82. Street_Name varchar(100) NOT NULL DEFAULT (NULL),
  83. Street_Number varchar(50) NOT NULL DEFAULT (NULL),
  84. Door_Number varchar(10) DEFAULT (NULL),
  85.  
  86. Employee_ID int NOT NULL FOREIGN KEY REFERENCES dbo.Employee(Employee_ID) on delete cascade
  87. );
  88.  
  89. -------------------------------------------------------------------
  90. --ADDITIONAL EMPLOYEE TABLES--
  91.  
  92. --CAR--
  93. CREATE TABLE dbo.Car (
  94. Car_ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  95. Brand varchar(200) NOT NULL CHECK(LEN(brand) >=2),
  96. Model varchar(200) NOT NULL CHECK(LEN(model) >=2),
  97. Date_bought date NOT NULL DEFAULT (GETDATE()),
  98. Licens_plate varchar(10) NOT NULL UNIQUE,
  99.  
  100.  
  101. Employee_ID int NULL FOREIGN KEY REFERENCES dbo.Employee(Employee_ID) on delete set default
  102. );
  103.  
  104. --CAR STATUS--
  105. CREATE TABLE dbo.car_status (
  106. Status_ID int NOT NULL IDENTITY(1,1),
  107. Accident_number int NOT NULL DEFAULT (0),
  108. Mileage int NOT NULL CHECK(mileage >= 0),
  109. Insurance_end date NOT NULL DEFAULT (NULL),
  110.  
  111. Car_ID int NOT NULL FOREIGN KEY REFERENCES dbo.Car(Car_ID) on delete cascade,
  112. );
  113. --========================================================--
  114. --CUSTOMER TABLES--
  115. --========================================================--
  116.  
  117. --CUSTOMER--
  118. Create table dbo.Customer (
  119. Customer_ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  120. Name varchar(200) NULL DEFAULT (NULL),
  121. Surname varchar(200) NULL DEFAULT (NULL),
  122. Phone_Nr varchar(14) NULL DEFAULT (NULL)
  123. );
  124.  
  125. --CUSTOMER ADRESS--
  126. CREATE TABLE dbo.Customer_Adress(
  127. Adress_id int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  128. City varchar(200) NULL DEFAULT (NULL),
  129. Street_Name varchar(200) NULL DEFAULT (NULL),
  130. Street_Number int NULL DEFAULT (NULL),
  131. Door_Number int NULL DEFAULT (NULL),
  132.  
  133. Customer_ID int NOT NULL FOREIGN KEY REFERENCES dbo.Customer(Customer_ID) on delete cascade
  134. );
  135. --========================================================--
  136. --ORDERS TABLES--
  137. --========================================================--
  138.  
  139. --PAYMENT METHOD--
  140. CREATE TABLE dbo.Payment_Method(
  141. Payment_Method_ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  142. Method varchar(50) NULL DEFAULT ('cash'),
  143. );
  144.  
  145. --ORDER TYPE--
  146. CREATE TABLE dbo.Order_Type(
  147. Order_Type_ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  148. Order_type varchar(100) NULL DEFAULT ('reastaurant'),
  149. );
  150.  
  151. --ORDERS--
  152. CREATE TABLE dbo.Orders(
  153. Order_ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  154. Date_order date NOT NULL DEFAULT GETDATE(),
  155. Order_price MONEY NULL CHECK(Order_price >= 0) DEFAULT (0),
  156.  
  157. Customer_ID int NULL DEFAULT (NULL) FOREIGN KEY REFERENCES dbo.Customer(Customer_ID) on delete set default,
  158. Payment_Method_ID INT NULL DEFAULT (NULL) FOREIGN KEY REFERENCES dbo.Payment_Method(Payment_Method_ID) on delete set default,
  159. Order_type int NULL DEFAULT (NULL) FOREIGN KEY REFERENCES dbo.Order_Type(Order_Type_ID) on delete set default,
  160. );
  161.  
  162. --EMPLOYEE ORDERS (BRIDGE TABLE N:N)--
  163. CREATE TABLE dbo.EmployeeOrders(
  164. ID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
  165. Employee_ID int NULL DEFAULT (NULL) FOREIGN KEY REFERENCES dbo.Employee(Employee_ID) on delete cascade,
  166. Order_ID int NULL DEFAULT (NULL) FOREIGN KEY REFERENCES dbo.Orders(Order_ID) on delete cascade,
  167. );
  168.  
  169. --========================================================--
  170. --PRODUCTS TABLES--
  171. --========================================================--
  172.  
  173. --DRINK--
  174. CREATE TABLE dbo.Drink(
  175. Drink_ID varchar(10) NOT NULL PRIMARY KEY,
  176. Drink_Name varchar(50) NOT NULL,
  177. Drink_type varchar(50) NOT NULL,
  178. Drink_description varchar(200) NOT NULL,
  179. Price MONEY NULL DEFAULT (0)
  180. );
  181.  
  182. --PIZZA--
  183. CREATE TABLE dbo.Pizza(
  184. Pizza_ID varchar(10) NOT NULL PRIMARY KEY,
  185. Pizza_Name varchar(50) NOT NULL,
  186. Toppings varchar(200) NOT NULL,
  187. Pizza_type varchar(50) NOT NULL
  188. );
  189.  
  190. --SAUCE--
  191. CREATE TABLE dbo.Sauce(
  192. Sauce_ID varchar(10) NOT NULL PRIMARY KEY,
  193. Sauce_Name varchar(50) NOT NULL,
  194. Sauce_description varchar(300) NOT NULL,
  195. Sauce_type varchar(50) NOT NULL,
  196. Price MONEY NULL DEFAULT (0)
  197. );
  198.  
  199. --SIZE--
  200. CREATE TABLE dbo.size(
  201. ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  202. Size varchar(50) NOT NULL DEFAULT('Medium'),
  203. Size_cm int NOT NULL DEFAULT(30),
  204. Price MONEY NULL DEFAULT (0),
  205. );
  206.  
  207. --PRODUCTS--
  208. CREATE TABLE dbo.Products(
  209. Product_id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
  210.  
  211. Pizza_ID varchar(10) NULL FOREIGN KEY REFERENCES Pizza(Pizza_ID)on delete set NULL,
  212. Sauce_ID varchar(10) NULL FOREIGN KEY REFERENCES Sauce(Sauce_ID)on delete set NULL,
  213. Drink_ID varchar(10) NULL FOREIGN KEY REFERENCES Drink(Drink_ID)on delete set NULL,
  214. Size_ID INT NULL FOREIGN KEY REFERENCES dbo.size(ID)on delete set NULL,
  215. Order_ID int NOT NULL FOREIGN KEY REFERENCES dbo.Orders(Order_ID)on delete cascade,
  216. );
  217. GO
  218. --==========================================================================================================--
  219. --FUNCTIONS--
  220. --ZMIENIA FORMAT NUMERU TELEFONU--
  221.  
  222. create function znak(@znaki char(14))
  223. returns char(14)
  224. as
  225. begin
  226. declare @a char(3);
  227. declare @b char(3);
  228. declare @c char(4);
  229. declare @d char(14);
  230. set @a =(select SUBSTRING(@znaki,1,3));
  231. set @b=(select substring(@znaki,4,3));
  232. set @c=(select SUBSTRING(@znaki,7,4));
  233.  
  234. set @d='('+@a+')'+SPACE(1)+@b+'-'+@c;
  235. return @d;
  236. end
  237. GO
  238.  
  239. --SPRADZ FORMAT MAILOWY--
  240.  
  241. CREATE FUNCTION checkEmail (@email VARCHAR(50))
  242. RETURNS INT
  243. AS
  244. BEGIN
  245. IF (@email NOT LIKE '_%@__%.__%')
  246. RETURN 0
  247.  
  248. RETURN 1
  249. END
  250. GO
  251.  
  252.  
  253. --==========================================================================================================--
  254. --TRIGGERS--
  255.  
  256. --FORMATOWANIE NUMERU--
  257.  
  258. CREATE TRIGGER Format_Number_E
  259. ON dbo.Employee
  260. FOR INSERT--update
  261. AS
  262. BEGIN
  263.  
  264. UPDATE Employee
  265. SET Phone_Nr = (select dbo.znak(Phone_Nr))
  266. WHERE Employee_ID = (SELECT Employee_ID FROM INSERTED)
  267. END
  268. GO
  269.  
  270. CREATE TRIGGER Format_Number_C
  271. ON dbo.Customer
  272. FOR INSERT
  273. AS
  274. BEGIN
  275.  
  276. UPDATE Customer
  277. SET Phone_Nr = dbo.znak(Phone_Nr)
  278. WHERE Customer_ID = (SELECT Customer_ID FROM INSERTED)
  279. END
  280. GO
  281.  
  282.  
  283. --AUTOMATYCZNE OBLICZNIE CENY--
  284.  
  285. CREATE TRIGGER Order_PriceT
  286. ON dbo.Products
  287. FOR INSERT
  288. AS
  289. BEGIN
  290.  
  291. DECLARE @pizza MONEY;
  292. DECLARE @drink MONEY;
  293. DECLARE @sauce MONEY
  294.  
  295. if (SELECT Price From Drink WHERE Drink_ID = (SELECT Drink_ID FROM INSERTED)) IS NULL
  296. SET @drink = 0
  297. ELSE
  298. SET @drink = (SELECT Price From Drink WHERE Drink_ID = (SELECT Drink_ID FROM INSERTED))
  299.  
  300. if (SELECT Price From Sauce WHERE Sauce_ID = (SELECT Sauce_ID FROM INSERTED)) IS NULL
  301. SET @sauce = 0
  302. ELSE
  303. SET @sauce = (SELECT Price From Sauce WHERE Sauce_ID = (SELECT Sauce_ID FROM INSERTED))
  304.  
  305. if (SELECT Price From size WHERE ID = (SELECT Size_ID FROM INSERTED)) IS NULL
  306. SET @pizza = 0
  307. ELSE
  308. SET @pizza = (SELECT Price From size WHERE ID = (SELECT Size_ID FROM INSERTED))
  309.  
  310. UPDATE Orders
  311. SET Order_price = Order_price + @drink + @sauce + @pizza
  312. WHERE Order_ID = (SELECT Order_ID FROM INSERTED)
  313.  
  314. END
  315. GO
  316.  
  317. --BIG PICA promocja get two another 25% off
  318.  
  319. CREATE TRIGGER proc_OFF_BIG_PIZZA
  320. ON dbo.Products
  321. FOR INSERT
  322. AS
  323. BEGIN
  324. DECLARE @Promo int;
  325. DECLARE @poz INT;
  326.  
  327. SET @poz = (SELECT COUNT(*) FROM Products
  328. WHERE Order_ID = (SELECT Order_ID From Inserted) AND Size_ID = 3)
  329.  
  330. SET @Promo = (SELECT Price FROM Size Where ID = 3) * 0.25
  331.  
  332. IF (SELECT Size_ID From Inserted) = 3 AND @poz % 2 = 0
  333. UPDATE Orders
  334. SET Order_price = Order_price - @Promo WHERE Order_ID = (SELECT Order_ID FROM INSERTED)
  335.  
  336. END
  337. GO
  338.  
  339. --NIEPRAWIDLOWY FORMAT EMAIL--
  340.  
  341. CREATE TRIGGER email_checkT
  342. ON dbo.Employee
  343. FOR INSERT
  344. AS
  345. BEGIN
  346. DECLARE @CHECK varchar(40);
  347. SET @CHECK = (SELECT E_mail from INSERTED)
  348. IF dbo.checkEmail(@CHECK) = 0
  349. BEGIN
  350. RAISERROR('ERROR - bad E-mail format (CORRECT FORMAT: Example@mail.com)', 1, 2)
  351. UPDATE Employee
  352. SET E_mail = NULL WHERE Employee_ID = (select Employee_ID from inserted)
  353. END
  354. END
  355. GO
  356.  
  357. --PRODUCT ALREADY EXISTS--
  358.  
  359. CREATE TRIGGER exists_pizza
  360. ON dbo.pizza
  361. FOR INSERT
  362. AS
  363. BEGIN
  364.  
  365. IF (SELECT COUNT(Pizza_Name) FROM pizza WHERE Pizza_Name = (SELECT Pizza_Name FROM INSERTED)) > 1
  366. BEGIN
  367. RAISERROR('ERROR - THIS PIZZA ALREADY EXISTS IN DATABASE', 1, 2)
  368. DELETE FROM Pizza WHERE Pizza_Name = (SELECT Pizza_Name FROM INSERTED)
  369. END
  370.  
  371. END
  372. GO
  373. ----------
  374. CREATE TRIGGER exists_drink
  375. ON dbo.Drink
  376. FOR INSERT
  377. AS
  378. BEGIN
  379.  
  380. IF (SELECT COUNT(Drink_Name) FROM Drink WHERE Drink_Name = (SELECT Drink_Name FROM INSERTED)) > 1
  381. BEGIN
  382. RAISERROR('ERROR - THIS DRINK ALREADY EXISTS IN DATABASE', 1, 2)
  383. DELETE FROM Drink WHERE Drink_Name = (SELECT Drink_Name FROM INSERTED)
  384. END
  385.  
  386. END
  387. GO
  388. ----------
  389. CREATE TRIGGER exists_sauce
  390. ON dbo.Sauce
  391. FOR INSERT
  392. AS
  393. BEGIN
  394.  
  395. IF (SELECT COUNT(Sauce_Name) FROM Sauce WHERE Sauce_Name = (SELECT Sauce_Name FROM INSERTED)) > 1
  396. BEGIN
  397. RAISERROR('ERROR - THIS SAUCE ALREADY EXISTS IN DATABASE', 1, 2)
  398. DELETE FROM Sauce WHERE Sauce_Name = (SELECT Sauce_Name FROM INSERTED)
  399. END
  400.  
  401. END
  402. GO
  403.  
  404. --==========================================================================================================--
  405. --PROCEDURES--
  406.  
  407. --TWORZENIE ZAMOWIENIA--
  408.  
  409. CREATE PROCEDURE dbo.CREATE_ORDER
  410. @Order_type int,
  411. @Employee_1 int, @Employee_2 int,@Payment_Method_ID int,
  412. @Name varchar(100), @Surname varchar(100),@Phone_Nr int,
  413. @City varchar(100), @Street_Name varchar(100), @Street_Number int, @Door_Number int
  414. AS
  415. BEGIN
  416. INSERT INTO Customer(Name,Surname,phone_Nr) VALUES(@Name,@Surname,@Phone_Nr)
  417.  
  418. DECLARE @Customer_ID int
  419. SET @Customer_ID = (SELECT TOP 1 Customer_ID From Customer ORDER BY Customer_ID DESC)
  420.  
  421. INSERT INTO Customer_Adress(City,Street_Name,Street_Number,Door_Number,Customer_ID)
  422. VALUES(@City,@Street_Name,@Street_Number,@Door_Number,@Customer_ID)
  423.  
  424. INSERT INTO Orders(Customer_ID,Payment_Method_ID,Order_type)
  425. Values(@Customer_ID,@Payment_Method_ID,@Order_type)
  426.  
  427. DECLARE @Order_ID int;
  428. SET @Order_ID = (SELECT TOP 1 ORDER_ID From Orders ORDER BY Order_ID DESC)
  429. INSERT INTO EmployeeOrders(Employee_ID,Order_ID)
  430. VALUES(@Employee_1,@Order_ID)
  431. INSERT INTO EmployeeOrders(Employee_ID,Order_ID)
  432. VALUES(@Employee_2,@Order_ID)
  433. END
  434. GO
  435.  
  436.  
  437. --DODAJ PRODUKT/Y DO ZAMOWIENIA--
  438.  
  439. CREATE PROCEDURE dbo.Add_Product
  440. @Order_ID int,
  441. @Pizza_ID varchar(10),
  442. @Sauce_ID varchar(10),
  443. @Drink_ID varchar(10),
  444. @Size_ID int
  445. AS
  446. insert into Products(Order_ID,Pizza_ID,Sauce_ID,Drink_ID,Size_ID) VALUES(@Order_ID,@Pizza_ID,@Sauce_ID,@Drink_ID,@Size_ID)
  447. GO
  448.  
  449.  
  450. --DAWANIE I ODEJMOWANIE SAMOCHODA PRACOWNIKU--
  451.  
  452. CREATE PROCEDURE dbo.give_take_car
  453. @Employee_ID int,
  454. @Car_ID int
  455. AS
  456. BEGIN
  457. if (select Employee_ID from Car where car_ID=@Car_ID) = @Employee_ID
  458. UPDATE Car
  459. SET Employee_ID = NULL
  460. WHERE car_ID = @Car_ID
  461.  
  462. else
  463. UPDATE Car
  464. SET Employee_ID = @Employee_ID
  465. WHERE car_ID = @Car_ID
  466. END
  467. GO
  468.  
  469.  
  470. --DAWANIE PREMII PRACOWNIKU--
  471.  
  472. CREATE PROCEDURE salary_up
  473. @Employee_ID int,
  474. @salary money
  475. AS
  476. IF @salary < 0
  477. RAISERROR ('Wrong argument with salary',1,2);
  478. else
  479. Update Employee set salary = salary + @salary
  480. WHERE Employee_ID = @Employee_ID;
  481. GO
  482.  
  483. --POKAZ WSZYSTKIE ZAMOWIENIA WYPELNIONE PRZEZ EMPLOYEE_ID--
  484.  
  485. CREATE PROCEDURE Show_Employee_Orders
  486. @Employee_ID int
  487. AS
  488. SELECT Employee_ID,Name,Surname,Job_position,Date_hired,E_mail,Phone_Nr,Salary FROM Employee
  489. WHERE Employee_ID = @Employee_ID
  490.  
  491. SELECT o.Order_ID,o.Date_order, o.Customer_ID,o.Payment_Method_ID,o.Order_Type,o.Order_Price FROM Orders as o
  492. JOIN EmployeeOrders as eo ON o.Order_ID=eo.Order_ID
  493. WHERE eo.Employee_ID = @Employee_ID
  494. GO
  495.  
  496. --==========================================================================================================--
  497. --VIEWS--
  498.  
  499. --INFORMACJA O ROBOTNIKACH--
  500.  
  501. CREATE VIEW number
  502. AS
  503. select e.Employee_ID,count(e.Employee_ID) as number from Employee as e
  504. INNER JOIN EmployeeOrders as o ON e.Employee_ID = o.Employee_ID
  505. Group by e.Employee_ID
  506. GO
  507.  
  508. CREATE VIEW Employee_INFO
  509. AS
  510.  
  511. SELECT TOP 100 PERCENT e.Employee_ID, e.Name, e.Surname, e.Birthday, e.Job_position, e.Date_hired, e.PESEL, e.Salary, e.E_mail, e.Phone_Nr,
  512. ea.Country, ea.City, ea.Street_Name, ea.Street_Number, ea.Door_Number, n.number
  513. FROM Employee as e JOIN Employee_Adress as ea
  514. ON e.Employee_ID = ea.Employee_ID
  515. LEFT JOIN number as n ON e.Employee_ID = n.Employee_ID
  516. GROUP BY e.Employee_ID, e.Name, e.Surname, e.Birthday, e.Job_position, e.Date_hired, e.PESEL, e.Salary, e.E_mail, e.Phone_Nr,
  517. ea.Country, ea.City, ea.Street_Name, ea.Street_Number, ea.Door_Number,n.number
  518. ORDER BY e.Employee_ID ASC
  519.  
  520. GO
  521.  
  522.  
  523. --PIZZA MENU--
  524.  
  525. CREATE VIEW Menu_pizza
  526. AS
  527. select Pizza_ID,Pizza_Name, Toppings,Pizza_Type,
  528. (select price as '20 cm' from size where id = 1) as 'Price of Small',
  529. (select price as '20 cm' from size where id = 2) as 'Price of Medium',
  530. (select price as '20 cm' from size where id = 3) as 'Price of Large'
  531. FROM pizza
  532.  
  533. GO
  534.  
  535. --POPULAR PIZZA--
  536.  
  537. CREATE VIEW pizza_popularity
  538. AS
  539. SELECT TOP 100 PERCENT p.Pizza_ID,p.Pizza_Name,p.Toppings,p.Pizza_Type,
  540. (select count(pa.Pizza_ID) from products as pa where pa.Pizza_ID = p.Pizza_ID) as 'Pizza number'
  541. FROM Pizza as p
  542. ORDER BY 'Pizza number' DESC
  543. GO
  544.  
  545. -------------------------
  546.  
  547. CREATE VIEW drink_popularity
  548. AS
  549. SELECT TOP 100 PERCENT d.Drink_ID,d.Drink_Name,d.Drink_type,d.Drink_description,d.Price,
  550. (select count(pa.Drink_ID) from products as pa where pa.Drink_ID = d.Drink_ID) as 'Drink number'
  551. FROM Drink as d
  552. ORDER BY 'Drink number' DESC
  553. GO
  554.  
  555. ----------------------------
  556.  
  557. CREATE VIEW sauce_popularity
  558. AS
  559. SELECT TOP 100 PERCENT s.Sauce_ID,s.Sauce_Name,s.Sauce_type,s.Sauce_description,s.Price,
  560. (select count(pa.Sauce_ID) from products as pa where pa.Sauce_ID = s.sauce_ID) as 'Sauce number'
  561. FROM sauce as s
  562. ORDER BY 'Sauce number' DESC
  563. GO
  564.  
  565. --ORDER INFO--
  566.  
  567. CREATE VIEW ORDER_INFO
  568. AS
  569. select TOP 100 PERCENT o.Order_ID, o.Date_order, o.Order_price, o.Customer_ID,
  570. e.Employee_ID,e.Name, e.Surname, pm.Method, ot.Order_type,
  571. (select count(pa.Pizza_ID) from products as pa where pa.Order_ID = o.Order_ID) as 'Pizza count',
  572. (select count(p.Drink_ID) from products as p where p.Order_ID = o.Order_ID) as 'Drink count',
  573. (select count(s.sauce_ID) from products as s where s.Order_ID = o.Order_ID) as 'Sauce count'
  574. from orders as o
  575. join EmployeeOrders as eo on eo.Order_ID=o.Order_ID
  576. join Employee as e on e.Employee_ID = eo.Employee_ID
  577. join Payment_Method as pm on pm.Payment_Method_ID = o.Payment_Method_ID
  578. join Order_Type as ot on o.Order_type = ot.Order_Type_ID
  579. ORDER BY Order_ID DESC
  580. GO
  581.  
  582.  
  583. --CAR INFO--
  584.  
  585. CREATE VIEW car_info
  586. AS
  587. select c.car_ID, c.brand, c.model, c.date_bought, c.licens_plate, cs.Accident_number,cs.mileage,cs.insurance_end,e.Employee_ID, e.Name, e.Surname from Car as c
  588. left join Employee as e on c.Employee_ID = e.Employee_ID
  589. join car_status as cs on c.car_ID = cs.car_ID
  590. GO
  591.  
  592. --NAJPOPULARNIEJSZE MIASTA DOSTAWY--
  593.  
  594. CREATE VIEW DELIVERY_POPULARITY_CITY
  595. AS
  596. select TOP 100 PERCENT Street_Name, count(Street_Name) as 'Number of Orders' FROM Customer_Adress
  597. WHERE Street_Name IS NOT NULL
  598. Group by Street_Name
  599. ORDER BY 'Number of Orders' DESC
  600. GO
  601.  
  602. --DOCHOD ZA MIESIAC--
  603.  
  604. CREATE VIEW Monthly_Income
  605. AS
  606. SELECT TOP 100 PERCENT Date_Order, SUM(Order_price) as 'Income' FROM Orders
  607. GROUP BY Date_Order
  608. ORDER BY Date_Order ASC
  609. GO
  610.  
  611. --OSOBY KTORE ZARABIAJA MNIEJ NIZ SREDNIA--
  612.  
  613. CREATE VIEW BELOW_AVG
  614. AS
  615. SELECT TOP 100 PERCENT Employee_ID,Name,Surname,Birthday,Job_position,Date_Hired,PESEL,Salary FROM Employee
  616. GROUP BY Employee_ID,Name,Surname,Birthday,Job_position,Date_Hired,PESEL,Salary
  617. HAVING salary < (select avg(salary) from Employee)
  618. ORDER BY Salary DESC
  619. GO
  620.  
  621. --==========================================================================================================--
  622. --INSERT TO DATABASE--
  623.  
  624. --EMPLOYEE--
  625. insert into dbo.Employee values('Dariusz','Rodzewicz','1998-12-18','Piekarz','2013-05-15','20054788612',120,'DRodzewicz@mgmail.com','861214043')
  626. insert into dbo.Employee values('Robert','Radulewicz','1998-04-07','Piekarz','2013-05-15','15937846132',600,'RobRAdulew@gmail.com','861234557')
  627. insert into dbo.Employee values('Lukasz','Dowgialo','1997-06-01','Kurier','2013-05-15','98712314785',1000,'DowgiaLukas@gmail.com','86856984')
  628. insert into dbo.Employee values('Ryszard','Granicki','1997-06-28','Piekarz','2013-05-15','65412398752',800,'RysiukGran@gmail.com','861523698')
  629. insert into dbo.Employee values('Lukasz','Baniukiewicz','1998-12-18','Kurier','2013-05-15','12589637415',1200,'Baniuk1999@gmail.com','86141586')
  630. insert into dbo.Employee values('Grzegorz','Wojtkiewicz','1999-01-16','Kasier','2013-05-15','12356987452',450,'WojtGrisha@gmail.com','861740012')
  631. insert into dbo.Employee values('Andrzej','Tichonow','1986-03-27','Piekarz','2013-05-15','20054788614',2000,'Lenkas89@gmail.com','861115225')
  632. insert into dbo.Employee values('Julia','Stanulyte','1998-10-11','Piekarz','2013-05-15','20111552386',600,'HarcJulia@gmail.com','861158996')
  633. insert into dbo.Employee values('Adriana','Wiszniewska','1996-08-22','Kasier','2013-05-15','12000254550',850,'MilionAdri@gmail.com','8614311258')
  634. insert into dbo.Employee values('Barbara','Zinkiewicz','1998-02-28','Kurier','2013-05-15','25555521587',775,'BasiutaZ@gmail.com','8645558555')
  635. --select * from Employee
  636.  
  637. --EMPLOYEE ADRESS--
  638. insert into dbo.Employee_Adress values('Lithuania','Vilnius','Erfuro','122','44',1)
  639. insert into dbo.Employee_Adress values('Poland','Gdansk','Pomorska','44',NULL,2)
  640. insert into dbo.Employee_Adress values('Poland','Gdansk','3-Maja','144','75',3)
  641. insert into dbo.Employee_Adress values('Poland','Gdynia','Armii_Krajowej','98','B',4)
  642. insert into dbo.Employee_Adress values('Poland','Sopot','Bitwy_Pod_Plowcami','64','209',5)
  643. insert into dbo.Employee_Adress values('Poland','Sopot','Bitwy_Pod_Plowcami','64','209',6)
  644. insert into dbo.Employee_Adress values('Poland','Gdansk','3-Maja','75',NULL,7)
  645. insert into dbo.Employee_Adress values('Poland','Gdynia','Mickiewicza','47','65',8)
  646. insert into dbo.Employee_Adress values('Belarus','Grodno','Zapackaja','44','56',9)
  647. insert into dbo.Employee_Adress values('Poland','Gdansk','Reja','69','A',10)
  648. --select * from Employee_Adress
  649.  
  650. --CAR--
  651. insert into dbo.Car values('Toyota','Auris','2014-08-15','GDN-45378',NULL),
  652. ('Opel','Astra','2015-09-24','GDN-00218',NULL),
  653. ('Volkswagen','Golf','2014-10-02','GDN-95734',NULL);
  654. --select * from Car
  655.  
  656. --CAR STATUS--
  657. insert into dbo.car_status values(0,150000,'2020-12-15',1),
  658. (1,192025,'2020-12-15',2),
  659. (0,134008,'2020-12-15',3);
  660. --select * from car_status
  661.  
  662. --PAYMENT METHOD--
  663. insert into dbo.Payment_Method values('cash'),
  664. ('credit'),
  665. ('PayPal'),
  666. ('Bank Transfer');
  667. --select * from Payment_Method
  668.  
  669. --ORDER TYPE--
  670. insert into dbo.Order_Type values('Restaurant'),
  671. ('Take-Away'),
  672. ('Delivery');
  673. --select * from Order_Type
  674.  
  675. --PIZZA SIZE--
  676. insert into dbo.size values('Small',25,20),
  677. ('Medium',30,26),
  678. ('Large',40,34);
  679. --select * from size
  680.  
  681. --SAUCE--
  682. insert into dbo.Sauce values('CZWY','Czosnakowy','Nie ma','lagodny',2)
  683. insert into dbo.Sauce values('POWY','Pomidorowy','Nie ma','lagodny',1.5)
  684. insert into dbo.Sauce values('ARSKI','Arabski','Nie ma','ostry',2)
  685. insert into dbo.Sauce values('MIWY','Miodowy','Nie ma','slodki',2)
  686. insert into dbo.Sauce values('MUWY','Musztardowy','Nie ma','Gorzki',1.5)
  687. insert into dbo.Sauce values('PIWY','Piepszowy','Nie ma','Gorzki',2)
  688. --select * from Sauce
  689.  
  690. --PIZZA--
  691. insert into dbo.Pizza values('AlNO','Albano','ser, oregano, papryka, boczek, szynka, cebula','tradycyjna')
  692. insert into dbo.Pizza values('CASA','Calabresa','ser, oregano, salami, oliwki, papryczki apalenos, tabasco','ostra')
  693. insert into dbo.Pizza values('MACO','Marco','ser, oregano, salami, pieczarki','tradycyjna')
  694. insert into dbo.Pizza values('BAMA','Bahama','ser,oregano, szynka, ananas','slodka')
  695. insert into dbo.Pizza values('MATA','Margherita','ser, oregano','tradycyjna')
  696. insert into dbo.Pizza values('FONA','Foggiana',' ser, oregano, pieczarki','tradycyjna')
  697. insert into dbo.Pizza values('ONE','1x1','sos, ser, oregano, szynka','tradycyjna')
  698. insert into dbo.Pizza values('PORA','Povera','sos, ser, oregano, szynka, pieczarki','tradycyjna')
  699. insert into dbo.Pizza values('UNDO','Un Ricordo','sos, ser, oregano, szynka, kukurydza','tradycyjna')
  700. insert into dbo.Pizza values('UUGI','Quatro Formaggi','sos, ser, oregano, ser feta, ser pleśniowy, ser gouda','serowa')
  701. --select* from Pizza
  702.  
  703. --DRIKNS--
  704. insert into dbo.Drink values('CZHE','Czarna Herbata','Herbata','aroma',4)
  705. insert into dbo.Drink values('ZIHE','Zielona Herbata','Herbata','aroma',4)
  706. insert into dbo.Drink values('COLA','Co-Ca-Cola','gazowane','smczna',5)
  707. insert into dbo.Drink values('SPTE','Sprite','gazowane','smczna',5)
  708. insert into dbo.Drink values('FATA','Fanta','gazowane','smczna',5)
  709. --select* from Drink
  710.  
  711. --==========================================================================================================--
  712. --TESTOWANIE--
  713. ---------------------
  714. --TRIGGERS--
  715.  
  716. --Format_Number_E--
  717. --korzystamy z funkcji formatowania numeru
  718. insert into dbo.Employee values('Test','Testowy','2010-10-10','Piekarz','2013-05-15','00000000142',120,'DRodzewicz@mgmail.com','861214043')
  719. insert into dbo.Employee_Adress values('Poland','Gdansk','Reja','69','A',11)
  720. SELECT *FROM EMPLOYEE WHERE Employee_ID = 11
  721.  
  722. --Format_Number_C--
  723. --korzystamy z funkcji formatowania numeru
  724. INSERT INTO Customer Values('Tester','Testowy','814523654')
  725. SELECT * FROM Customer
  726. DELETE FROM Customer WHere Name = 'Tester'
  727.  
  728. --Order_PriceT--
  729. --oblicza za nas cene calego zamowienia (pokaze to w sekcji procedury przy dodaniu produktow do zamowienia)
  730.  
  731. --proc_OFF_BIG_PIZZA--
  732. --przy zamowieniu parzystej pary Duzych pic za druga pice placisz o 25% mniej (pokaze to w sekcji procedury przy dodaniu produktow do zamowienia)
  733.  
  734. --email_checkT--
  735. --korzystamy z funkcji sprawdzania formatu E-mail
  736. insert into dbo.Employee values('Test2','Testowy2','2010-10-10','Piekarz','2013-05-15','00000000131',120,'DRodzewiczmgmail.com','861214043')
  737. insert into dbo.Employee_Adress values('Poland','Gdansk','Reja','69','A',11)
  738. SELECT *FROM EMPLOYEE WHERE Employee_ID = 11
  739. UPDATE dbo.Employee SET E_mail = 'example@mail.com' WHERE Employee_ID = 11
  740.  
  741. --exists_pizza--
  742. insert into dbo.Pizza values('A123','Albano','ser, oregano, papryka, boczek, szynka, cebula','tradycyjna')
  743. --exists_drink--
  744. insert into dbo.Drink values('CZ12','Czarna Herbata','Herbata','aroma',4)
  745. -- exists_sauce--
  746. insert into dbo.Sauce values('CZ14','Czosnakowy','Nie ma','lagodny',2)
  747.  
  748. ---------------------
  749. --PROCEDURES--
  750.  
  751. --CREATE_ORDER--
  752.  
  753. select * from Order_Type
  754. select * from Employee
  755. select * from Payment_Method
  756. select * from Orders
  757.  
  758. EXEC CREATE_ORDER 3,2,3,2,'Test','TEstowy','124253789','Gdansk','Barzynskiego',64,122
  759. --
  760.  
  761. --Add_Product--
  762.  
  763. select * FROM pizza
  764. select * from Drink
  765. select * from sauce
  766. select * from size
  767. select * from products
  768.  
  769. EXEC Add_Product 1,'CASA','MIWY','COLA',3
  770. EXEC Add_Product 1,'FONA',NULL,NULL,3
  771. --34+34-8.5+2+5=66.5
  772.  
  773. --give_take_car--
  774.  
  775. SELECT * FROM Employee
  776. SELECT * FROM Car
  777.  
  778. EXEC give_take_car 5,2
  779.  
  780. --salary_up--
  781.  
  782. SELECT * FROM Employee
  783.  
  784. EXEC salary_up 1,80
  785.  
  786. --Show_Employee_Orders--
  787. exec Show_Employee_Orders 2
  788.  
  789. ------------------------------------------------------------------TWORZYMY ZAMOIENIA DO PRZYKLADU NA WIDOKI
  790. EXEC CREATE_ORDER 3,2,3,2,'Test2','TEstowy2','124253789','Gdansk','Barzynskiego',64,122
  791. EXEC Add_Product 2,'MATA','MIWY','COLA',3
  792. EXEC Add_Product 2,'CASA',NULL,'COLA',1
  793.  
  794. EXEC CREATE_ORDER 3,5,7,2,'Test3','TEstowy3','124253789','Gdansk','Zaspa',64,NULL
  795. EXEC Add_Product 3,'MATA','POWY','FATA',3
  796. EXEC Add_Product 3,'CASA',NULL,NULL,2
  797. EXEC Add_Product 3,'CASA',NULL,NULL,2
  798.  
  799. EXEC CREATE_ORDER 3,5,7,2,'Test4','TEstowy4','124253789','Gdansk','Zaspa',64,NULL
  800. EXEC Add_Product 4,'MATA','MUWY','FATA',3
  801. EXEC Add_Product 4,'CASA',NULL,NULL,1
  802. EXEC Add_Product 4,'CASA',NULL,'',2
  803.  
  804. EXEC CREATE_ORDER 3,5,7,2,'Test5','TEstowy5','124253789','SOPOT','MONCIAK',22,47
  805. EXEC Add_Product 5,'FONA','MUWY','FATA',3
  806. EXEC Add_Product 5,'FONA',NULL,NULL,1
  807. EXEC Add_Product 5,'FONA',NULL,NULL,2
  808.  
  809. EXEC CREATE_ORDER 3,10,7,3,'Test6','TEstowy6','124253789','SOPOT','3-maja',22,47
  810. EXEC Add_Product 6,'FONA','MUWY','SPTE',2
  811.  
  812. EXEC CREATE_ORDER 1,10,9,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL
  813. EXEC Add_Product 7,'FONA','MUWY','SPTE',2
  814.  
  815. EXEC CREATE_ORDER 1,8,9,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL
  816. EXEC Add_Product 8,'FONA','MUWY','SPTE',1
  817.  
  818. EXEC CREATE_ORDER 2,8,3,3,'TEST9','Testowy9','861214753',NULL,NULL,NULL,NULL
  819. EXEC Add_Product 9,'PORA','MUWY','SPTE',1
  820. EXEC Add_Product 9,'PORA',NULL,NULL,2
  821. EXEC Add_Product 9,'PORA',NULL,NULL,2
  822.  
  823. ---------------------
  824. --VIEWS--
  825.  
  826. --Employee_INFO--
  827. SELECT * from Employee_INFO
  828. --Menu_pizza--
  829. SELECT * FROM Menu_pizza
  830. --pizza_popularity--
  831. SELECT * FROM pizza_popularity
  832. --drink_popularity--
  833. SELECT * FROM drink_popularity
  834. --sauce_popularity--
  835. SELECT * FROM sauce_popularity
  836. --ORDER_INFO--
  837. SELECT * FROM ORDER_INFO
  838. --car_info--
  839. SELECT * FROM car_info
  840. --DELIVERY_POPULARITY_CITY--
  841. SELECT * FROM DELIVERY_POPULARITY_CITY
  842. --Monthly_Income--
  843. SELECT * FROM Monthly_Income
  844. --BELOW_AVG--
  845. SELECT * FROM BELOW_AVG
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement