Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-06-02.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
26.54 Mб
Скачать
  1. Пункт меню «Личные карточки»:

    1. Сортировка по ФИО.

Рисунок 6.14.5 – Карточка

При нажатии на кнопки «Ввод» или «Редактирование» мы попадаем на аналогичные режимы работы с Личной карточкой работника.

Личная карточка работника.

Рисунок 6.14.6 – Общие данные

Рисунок 6.14.7 – Дата и место рождения

Рисунок 6.14.8 – Образование и вуз

Рисунок 6.14.9 – Назначения

Рисунок 6.14.10 – Отпуска

Рисунок 6.14.11 – Списки по цехам

  1. Пункт меню «Выбор информации»

Рисунок 6.14.12 – Меню

2.1. Движение кадров.

2.1.1. Приказы оПриеме на Работу.

Рисунок 6.14.13 – Приказы о приеме на работу

Нужно было ввести Даты начала и Окончания отбора Приказов о приёме.Далее программа показывала список принятого персонала за период с расчетом Общего количества, с выделением временных работников и совместителей, а также расчет по категориям персонала. Эти расчеты входили в месячный отчет, который формировался также из программы, а средства выбора помогали при проверке правильности расчета.

2.1.2. Приказы о Перемещениях персонала.

Рисунок 6.14.14 – Приказы о перемещениях персонала

Группирование расчетов в ней производилось аналогично Приему на работу.

2.2. Выбор по Категориям персонала

2.2.1. Выбор по Категроиям.

Рисунок 6.14.15 – Выбор по категориям

При перемещении по категориям, автоматически просчитывалась численность персонала по данной категории.

Побуквенным вводом фамилии можно было найти нужного сотрудника данной категории.

2.2.2. Списки по Цехам и Категориям.

Рисунок 6.14.15 – Списки по цехам и категориям

  1. Пункт меню «Отчеты».

В нём представлен один Отчет – Отчет по Энергосбыту – для Отдела Энергосбыта, над которым я работал до момента увольнения. Делать его в той версии, что у меня была на тот момент было очень неудобно. Но я все же справился!  Расчет производился по месяцам и категориям.

Рисунок 6.14.16 – Отчет по энергосбыту

Глава 7. Практикум

7.1. Язык запросов sql

7.1.1. Запросы на чтение данных

В следующих упражнения из [18] используется базы данных «Поставки» с таблицами (ключевые поля подчеркнуты):

S – поставщики (Номер_поставщика, Фамилия, состояние, Город);

Р – детали (Номер_детали, Название, цвет, Вес, Город);

SPпоставки деталей (Номер_поставщика, Номер_детали, Количество);

J – изделия (Номер_изделия, Название, Город);

SPJ поставка деталей для изделий – (Номер_поставщика, Номер_детали, Номер_изделия, Количество).

Подзапросы

7.1.1.1 Выдать названия изделий, для которых поставляются детали поставщиком S1.

7.1.1.2. Выдать цвета деталей, поставляемых поставщиком S1.

7.1.1.3. Выдать номера деталей, поставляемых для какого-либо изделия в Лондоне.

7.1.1.4. Выдать номера изделий, использующих по крайней мере одну деталь, поставляемую поставщиком S1.

7.1.1.5. Выдать номера поставщиков, поставляющих по крайней мере одну деталь, поставляемую по крайней мере одним поставщиком, который поставляет по крайней мере одну красную деталь.

7.1.1.6. Выдать номера поставщиков, имеющих состояние меньшее, чем у поставщика S1.

7.1.1.7. Выдать номера поставщиков, поставляющих детали для какого-либо изделия с деталью Р1 в количестве, большем, чем средний объем поставок детали Р1 для этого изделия.

Квантор EXISTS

7.1.1.8. Повторите упражнение 7.1.1.3 и используйте в Вашем решении EXISTS.

7.1.1.9. Повторите упражнение 7.1.1.4 и используйте в Вашем решении EXISTS.

7.1.1.10. Выдать номера изделий, для которых не поставляет какой-либо красной детали поставщик из Лондона.

7.1.1.11. Выдать номера изделий, для которых детали полностью поставляет поставщик S1.

7. 1.1.12. Выдать номера деталей, поставляемых для всех изделий в Лондон.

7.1.1.13. Выдать номера поставщиков, поставляющих одну и ту же деталь для всех изделий.

7.1.1.14. Выдать номера изделий, для которых поставляются по крайней мере все детали, имеющиеся у поставщика S1.

Для следующих четырех упражнений преобразуйте приведенное предложение SELECT языка SQL обратно в его эквивалент на естественном языке.

7.1.1.15.

SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY

WHERE SPJY.НОМЕР_ИЗДЕЛИЯ=SPJX. НОМЕР_ИЗДЕЛИЯ AND NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ.НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJZ.НОМЕР_ПОСТАВЩИКА='S1'));

7.1.1.16.

DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE EXISTS (SELECT * FROM SPJ SPJX WHERE SPJ А.НОМЕР_ПОСТАВЩИКА = 'S1' AND SPJ А.НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ) AND NOT EXISTS (SELECT * FROM SPJ SPJB WHERE SPJB. НОМЕР_ПОСТАВЩИКА='S1' AND SPJB. НОМЕР_ДETAЛИ=SPJY.НОМЕР_ДЕТАЛИ AND SPJB.НОМЕР_ИЗДEЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ));

7.1.1.17.

SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE EXISTS (SELECT * FROM SPJ SPJA WHERE SPJA.НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJA.НОМЕР_ИЗДЕЛИЯ = SPJX.НОМЕР_ИЗДЕЛИЯ) AND NOT EXISTS (SELECT * FROM SPJ SPJB WHERE SPJB.НОМЕР_ПОСТАВЩИКА= 'S1' AND SPJB.НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJB.НОМЕР_ИЗДЕЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ));

7.1.1.18.

SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE EXISTS (SELECT * FROM SPJ SPJA WHERE SPJA.НОМЕР_ПОСТАВЩИКА =PJY.НОМЕР_ПОСТАВЩИКА AND SPJA. НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ ROM P WHERE ЦВЕТ = 'Красный') AND NOT EXISTS (SELECT * FROM SPJ SPJB WHERE SPJB.НОМЕР_ПОСТАВЩИКА = SPJY.НОМЕР_ПОСТАВЩИКА AND SPJB.НОМЕР_ИЗДЕЛИЯ = SPJX.НОМЕР_ИЗДЕЛИЯ)));

Стандартные функции

7.1.1.19. Выдать общее число изделий, для которых поставляет детали поставщик S1.

7.1.1.20. Выдать общее количество деталей Р1, поставляемых поставщиком S1.

7.1.1.21. Для каждой поставляемой для некоторого изделия детали выдать ее номер, номер изделия и соответствующее общее количество деталей.

7.1.1.22. Выдать номера изделий, для которых город является первым в алфавитном списке таких городов.

7.1.1.23. Выдать номера изделий, для которых средний объем поставки деталей Р1 больше наибольшего объема поставки любой детали для изделия J 1.

7.1.1.24. Выдать номера поставщиков, поставляющих деталь Р1 для какого-либо изделия в количестве, большем среднего объема поставок детали Р1 для этого изделия.

Объединение

7.1.1.25. Постройте упорядоченный список всех городов, в которых размещаются по крайней мере один поставщик, деталь или изделие.

7.1.1.26. Приведите результат следующего предложения SELECT:

SELECT P.ЦВЕТ FROM P UNION SELECT P. ЦВЕТ FROM P;

Ответы к некоторым упражнениям

Следующие ответы не обязательно являются единственно возможными.

7.1.1.1.

SELECT НАЗВАНИЕ FROM J WHERE НОМЕР_ИЗДЕЛИЯ IN (SELECT НОМЕР_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА =’S1’);

7.1.1.2.

SELECT DISTINCT ЦВЕТ FROM P WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА='S1');

7.3.

SELECT DISTINCT Н ОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ИЗДЕЛИЯ IN (SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE ГОРОД = 'Лондон');

7.1.1.4.

SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА='S1');

7.1.1.5.

SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА IN (SELECT НОМЕР_ПОСТАВЩИКА FROM SPJ WHERE НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM Р WHERE ЦВЕТ = 'Красный')));

7.1.1.6.

SELECT НОМЕР_ПОСТАВЩИКА FROM S WHERE СОСТОЯНИЕ <

(SELECT СОСТОЯНИЕ FROM S WHERE НОМЕР_ПОСТАВЩИКА = 'S1');

7.1.1.7.

SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ SPJX WHERE НОМЕР_ДЕТАЛИ = 'Р1’ КОЛИЧЕСТВО > (SELECT AVG (КОЛИЧЕСТВО) FROM SPJ SPJY WHERE НОМЕР_ДЕТАЛИ = 'Р1'

AND SPJY.НОМЕР_ИЗДЕЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ);

7.8

SELECT DISTINCT НОМЕР_ДЕТАЛИ FROM SPJ WHERE EXISTS (SELECT * FROM J WHERE НОМЕР_ИЗДЕЛИЯ = SPJ.НОМЕР_ИЗДЕЛИЯ AND ГОРОД = 'ЛОНДОН');

7.9.

SELECT DISTINCT SPJX.HOMEP_ИЗДЕЛИЯ FROM SPJ SPJX WHERE EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.HOMEP_ДЕТАЛИ=SPJX.HOMEP_ДЕТАЛИ AND SPJY.НОМЕР_ПОСТАВЩИКА = 'S1');

7.1.1.10.

SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE НОМЕР_ИЗДЕЛИЯ = J.НОМЕР_ИЗДЕЛИЯ AND НОМЕР_ДЕТАЛИ IN (SELECT НОМЕР_ДЕТАЛИ FROM P WHERE ЦВЕТ = 'Красный') AND НОМЕР_ПОСТАВЩИКА IN (SELECT НОМЕР_ПОСТАВЩИКА FROM S WHERE ГОРОД = 'Лондон'));

7.1.1.11.

SELECT НОМЕР_ИЗДЕЛИЯ J FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.НОМЕР_ИЗДЕЛИЯ =SPJX.НОМЕР_ИЗДЕЛИЯ AND SPJY.НОМЕР_ПОСТАВЩИКА<> ‘S1’);

7.1.1.12.

SELECT DISTINCT НОМЕР_ДЕТАЛИ FROM SPJ SPJX WHERE NOT EXISTS (SELECT * FROM J WHERE ГОРОД == 'Лондон');

7.1.1.13.

SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ SPJX WHERE EXISTS

(SELECT НОМЕР_ДЕТАЛИ FROM P WHERE NOT EXISTS (SELECT НОМЕР_ИЗДЕЛИЯ FROM J WHERE NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ.НОМЕР_ПОСТАВЩИКА =

SPJX.HOMEP_ ПОСТАВЩИКА AND SPJZ.НОМЕР_ДЕТАЛИ = P.НОМЕР_ДЕТАЛИ AND SPJZ.НОМЕР_ИЗДЕЛИЯ= J.НОМЕР_ИЗДЕЛИЯ)));

7.1.1.14

SELECT DISTINCT НОМЕР_ИЗДЕЛИЯ FROM SPJ SPJX WHERE NOT EXISTS (SELECT НОМЕР_ДЕТАЛИ FROM SPJ SPJY WHERE SPJY.НОМЕР_ПОСТАВЩИКА = 'S1' AND NOT EXISTS (SELECT * FROM SPJ SPJZ WHERE SPJZ.НОМЕР_ДЕТАЛИ = SPJY.НОМЕР_ДЕТАЛИ AND SPJZ.НОМЕР_ИЗДЕЛИЯ = SPJX.НОМЕР_ИЗДЕЛИЯ));

7.1.1.15. Выдать номера изделий, использующих только детали, поставляемые поставщиком S1.

7.1.1.16. Выдать номера изделий, для которых поставщик S1 поставляет несколько деталей каждого из поставляемых им типов.

7.1.1.17. Выдать номера деталей, таких, что по крайней мере несколько деталей каждого типа, которые в них используются, поставляется для них поставщиком S1.

7.1.1.18. Выдать номера изделий, детали для которых поставляет каждый поставщик, поставляющий какую-либо красную деталь.

7.1.1.19.

SELECT COUNT (DISTINCT НОМЕР_ИЗДЕЛИЯ) FROM SPJ WHERE НОМЕР_ПОСТАВЩИКА == 'S1';

7.1.1.20.

SELECT SUM (КОЛИЧЕСТВО) FROM SPJ WHERE НОМЕР_ДЕТАЛИ = ‘P1’AND НОМЕР_ПОСТАВ ЩИКА = 'S1';

7.1.1.21.

SELECT НОМЕР_ДЕТАЛИ, НОМЕР_ИЗДЕЛИЯ, SUM (КОЛИЧЕСТВО) FROM SPJ GROUP BY НОМЕР_ДЕТАЛИ, НОМЕР_ИЗДЕЛИЯ;

7.1.1.22.

SELECT НОМЕР_ИЗДЕЛИЯ FROM J

WHERE ГОРОД =(SELECT MIN (ГОРОД) FROM J);

7.1.1.23.

SELECT НОМЕР_ИЗДЕЛИЯ FROM SPJ WHERE НОМЕР_ДЕТАЛИ = 'PI' GROUP BY НОМЕР_ИЗДЕЛИЯ HAVING AVG (КОЛИЧЕСТВО) > (SELECT MAX (КОЛИЧЕСТВО) FROM SPJ WHERE НОМЕР_ ИЗДЕЛИЯ = 'J1');

7.1.1.24.

SELECT DISTINCT НОМЕР_ПОСТАВЩИКА FROM SPJ SPJX WHERE НОМЕР_ДЕТАЛИ = 'P1' AND КОЛИЧЕСТВО > (SELECT AVG (КОЛИЧЕСТВО) FROM SPJ SPJY WHERE НОМЕР_ДЕТАЛИ ='Р1’

AND SPJY.НОМЕР_ИЗДЕЛИЯ=SPJX.НОМЕР_ИЗДЕЛИЯ);

7.1.1.25.

SELECT ГОРОД FROM S UNION

SELECT ГОРОД FROM P UNION SELECT ГОРОД FROM J ORDER BY 1;

7.1.1.26. Список наименований цветов деталей без повторения.