Advertisement
Guest User

Untitled

a guest
May 25th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. -- Лабораторная работа №4, дисциплина "Базы данных", СПбГУАП, весенний семестр 2019
  2.  
  3. -- Удаление представлений
  4. -- DROP VIEW IF EXISTS View1 ...
  5. -- ваш код здесь!
  6. drop view if exists VIEW1;
  7. drop view if exists VIEW2;
  8. drop view if exists VIEW3;
  9.  
  10. -- Создание представлений
  11. -- 1) (Добавить в таблицу "Книга" колонку "Цена") Пользователи, у которых в данный момент в корзине лежит книг на сумму, большую, чем какого-либо из совершенных ими заказов
  12. -- CREATE VIEW View1 AS
  13. -- SELECT ...
  14. -- ваш код здесь!
  15. CREATE VIEW View1 AS
  16. SELECT ФИО
  17. FROM Заказ natural join Пользователь natural join Пункт_корзина natural join Книга
  18. GROUP BY Логин
  19. having max(Общая_стоимость) < Количество_в_корзине * Цена
  20. -- 2) Найти все книги категории "Роман", которые когда-либо заказывал пользователь Голиков Александр Сергеевич, и которые с тех пор стали дороже
  21. -- CREATE VIEW View2 AS
  22. -- SELECT ...
  23. -- ваш код здесь!
  24. CREATE VIEW View2 AS
  25. SELECT Название
  26. from Заказ cross join Книга_в_заказе on Заказ.Номер_заказа = Книга_в_заказе.Заказ natural join Категория_у_книг natural join Пользователь join Книга on Книга_в_заказе.ISBN = Книга.ISBN
  27. where Название_категории = 'Роман' and ФИО = 'Голиков Александр Сергеевич'
  28. group by ФИО
  29. having Книга_в_заказе.Цена < Книга.Цена
  30. -- 3) Для каждой категории вычислить количество авторов, чьи книги не переиздавались последние 10 лет
  31. -- CREATE VIEW View3 AS
  32. -- SELECT ...
  33. -- ваш код здесь!
  34. CREATE VIEW View3 AS
  35. SELECT Название_категории, count(*)
  36. FROM Книга natural join Категория_у_книг natural join Автор_у_книг
  37. WHERE ФИО not in (
  38. SELECT ФИО
  39. FROM Книга natural join Автор_у_книг
  40. WHERE Год_издания>=date('now')-10)
  41. GROUP BY Название_категории
  42. -- Оператор UPDATE
  43. -- Если количество экземпляров книг в корзине у пользователя меньше, чем количество книг на складе, уменьшить его до этого количества
  44. -- UPDATE Table1 ...
  45. -- ваш код здесь!
  46. UPDATE Пункт_корзина
  47. SET Количество_в_корзине = (SELECT Кол_во_на_складе
  48. FROM Книга
  49. WHERE Пункт_корзина.ISBN=Книга.ISBN and Кол_во_на_складе < (
  50. SELECT Количество_в_корзине
  51. FROM Пункт_корзина));
  52. -- Оператор DELETE
  53. -- Удалить пользователей, которые делали только 1 заказ, и при этом более года назад.
  54. -- DELETE FROM Table1 ...
  55. -- ваш код здесь!
  56. DELETE
  57. FROM Пользователь
  58. WHERE Логин in (SELECT Логин
  59. FROM Заказ
  60. WHERE Дата_оформления < date('now', '-1 year')
  61. GROUP BY Логин
  62. having count(*)=1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement