Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД Отчёт 4741 Полищук.docx
Скачиваний:
2
Добавлен:
15.08.2019
Размер:
54.87 Кб
Скачать

Обновление данных

  1. Увеличить тираж всех выпусков, выходящих с июня 2011 года, на 1000 экземпляров:

UPDATE copies SET copies.copies =(copies+1000) WHERE id_publication = (SELECT id_publication FROM publications WHERE date_publ>= '2011-06-01');

  1. Изменить id приложения, в котором находилась статья под названием «Встреча с авторами», на начение 5:

UPDATE id_inclusion SET title=5 WHERE id_inclusion = (SELECT id_inclusion FROM inclusion_article, articles WHERE inclusion_article.id_article=articles.id_article AND articles.title='Встреча с авторами');

  1. Изменить ответственного за оборудование, которое имеет название "Сканер EPSON PERFECTION V33" на того, у которого должность “Ответственный секретарь"^

UPDATE equipment SET id_worker = (SELECT worker_workposition.id_worker FROM worker_workposition WHERE id_workposition IN (SELECT id_workposition FROM workpositions WHERE title='корреспондент')) WHERE equipment.title='Сканер EPSON PERFECT';

  1. Изменить автора фото под названием "Браконьеры" на фамилию и инициалы корреспондента газеты:

UPDATE images SET author=(SELECT CONCAT(surname, ' ', SUBSTR(name, 1, 1), '. ',SUBSTR(patronymic, 1, 1), '. ') FROM workers,

worker_workposition, workpositions WHERE worker_workposition.id_worker=workers.id_worker AND worker_workposition.id_workposition=workpositions.id_workposition AND workpositions.title='корреспондент') WHERE title='Браконьеры';

  1. Обновить email, телефон, адрес организации, которая является типографией и которая осуществляет все виды печати:

UPDATE organisations SET adress='г.Псков, ул. Льва Толстого, д.25/1'

WHERE id_organisation IN (SELECT id_printer FROM printers WHERE print_type='все виды печати');

Выборки

  1. Вывести ФИОработника, который чаще всех был ответственным за выпуск номера газеты:

SELECT CONCAT(surname, ' ', name, ' ',patronymic), count(publications.id_duty) as c FROM workers, publications WHERE publications.id_duty=workers.id_worker

GROUP BY publications.id_duty HAVING c = (SELECT count(id_duty) as cc FROM publications GROUP BY id_duty HAVING cc=3);

  1. Найти средний тираж газеты:

SELECT (max(copies)+min(copies))/2 FROM publications;

  1. Вывести название вида самого частовыпускаемого вкладыша:

SELECT id_type_inclusion, count(id_type_inclusion) as c FROM publication_inclusion GROUP BY id_type_inclusion ORDER BY DESC LIMIT 1;

  1. Вывести название и контакты компании, которой был отправлен хотя бы один документ по факсу:

SELECT title, adress, phone, email FROM organisations WHERE id_organisation IN (SELECT id_organisation FROM outerdoc_organisation WHERE id_outerdocumentIN(SELECT id_outerdocument FROM outerdocuments WHERE send_or_get='Отправлен' AND type_send='Факс'));

  1. Вывести описание статьи и описание изображения, у которых одинаковые названия:

SELECT articles.*, images.* FROM articles, images, image_article

WHERE articles.id_article=image_article.id_article

AND images.id_image=image_article.id_image

AND images.title=articles.title;

  1. Вывести автора самой большой статьи и тип самого большого вкладыша:

(SELECT author FROM articles GROUP BY simbols HAVING max(simbols) ORDER BY DESC LIMIT 1) UNION (SELECT title FROM type_inclusions WHERE id_type_incl IN (SELECT id_type_incl FROM inclusions GROUP BY pages HAVING max(pages) ORDER BY DESC LIMIT 1));

  1. Найти самую дорогостоящую закупку, показать статью расходов, в которую входит эта закупка, а также годовой бюджет, рассчитанный на эту статью расходов:

SELECT costs.title, costs.amount, expenseitems.title, expenseitems.year_budget FROM expenseitems, costs

WHERE costs.id_expenseitem=expenseitems.id_expenseitem GROUP BY costs.amount HAVING max(costs.amount) ORDER BY costs.amount DESC LIMIT

1;

  1. Найти ФИО и должность таких работников, которые работали в период с 20 января 2010 года по с 20 января 2011 и не уезжали в это время в командировки:

SELECT CONCAT(surname, ' ', name, ' ',patronymic), workpositions.title FROM workers, worker_workposition, contracts, workpositions

WHERE workers.id_worker=worker_workposition.id_worker AND worker_workposition.id_contract=contracts.id_contract

AND worker_workposition.id_workposition=workpositions.id_workposition

AND contract_start BETWEEN '2010-01-20' AND '2011-01-20' AND contract_end BETWEEN '2010-01-20' AND '2011-01-20'

AND workers.id_worker NOT IN (SELECT id_worker FROM worktrips WHERE trip_start BETWEEN '2010-01-20' AND '2011-01-20');

  1. Вывести все даты и типы отпусков, в которые уходил редактор газеты:

SELECT CONCAT(holidays.start_holiday, ' ', holidays.end_holiday), holidays.type_holiday FROM holidays

WHERE id_worker = (SELECT id_worker FROM worker_workposition WHERE id_workposition = (SELECT id_workposition FROM workpositions WHERE title='редактор'));

  1. Найти ФИО таких работников, которые получали 3 поощрения:

SELECT CONCAT(surname, ' ', name, ' ',patronymic), COUNT(workers_encouragements.id_worker) as c FROM workers, workers_encouragements

WHERE workers_encouragements.id_worker=workers.id_worker GROUP BY workers_encouragements.id_worker

HAVING c = (SELECT COUNT(id_worker) FROM workers_encouragements GROUP BY id_worker HAVING id_worker=3);

Выводы

База данных для редакции газеты «Одуванчик» создана: созданы таблицы, в них помещены данные. Также данные в таблицах возможно обновлять, что и было проверено посредством тестовых обновлений.

23