Автор работы: Пользователь скрыл имя, 17 Июня 2013 в 06:49, курсовая работа
Каждый водитель характеризуется паспортными данными, классом, стажем работы и окладом, причем оклад зависит от класса и стажа работы. Маршрут автобуса характеризуется номером маршрута, названием начального и конечного пункта движения, временем начала и конца движения, интервалом движения и протяженностью в минутах (время движения от кольца до кольца). Характеристиками автобуса являются: номер государственной регистрации автобуса, его тип и вместимость, причем вместимость автобуса зависит от его типа. Каждый водитель закреплен за отдельным автобусом и работает на определенном маршруте, но в случае поломки своего автобуса или болезни другого водителя может пересесть на другую машину. В базе должен храниться график работы водителей. Необходимо предусмотреть возможность корректировки БД в случаях поступления на работу нового водителя, списания старого автобуса, введения нового маршрута или изменения старого и т.п.
Запрос “ВодтелиУволн”
Удаляет запись из таблицы Водители
DELETE *
FROM Водители
WHERE Pasp=Forms!Водители!PaspUv;
Результат:
Удалена запись вида:
Forms!Водители!PaspUv |
FIO |
staj |
klas |
Oklad |
data_roj |
Adres |
Запрос “ГрафикАвтоб_лин”
Формирует таблицу, содержащую номера автобусов, дату, и номер маршрута или сообщение о поломке, в случае неисправности.
Необходим, для составление графика работы автобусов.
SELECT Автобусы.avtob,
Водят.date,
Водят.marshr as Выход
FROM Автобусы inner join Водят on Автобусы.avtob=Водят.avtob
WHERE
(Автобусы.avtob not in (SELECT Поломки.avtob FROM Поломки))
UNION SELECT Поломки.avtob,
Поломки.date,
"Поломка" as Выход
FROM Поломки;
Результат:
номер |
дата |
Выход |
а004вп |
22.05.2006 |
2 |
а004вп |
23.05.2006 |
2 |
а004вп |
24.05.2006 |
2 |
а007пп |
23.05.2006 |
1 |
а007пп |
24.05.2006 |
1 |
а070пр |
25.05.2006 |
Поломка |
в007рп |
22.05.2006 |
1 |
в007рп |
23.05.2006 |
1 |
в007рп |
24.05.2006 |
1 |
в909ао |
22.05.2006 |
4 |
в909ао |
23.05.2006 |
4 |
в909ао |
24.05.2006 |
4 |
н006оо |
22.05.2006 |
2 |
н006оо |
23.05.2006 |
2 |
н006оо |
24.05.2006 |
2 |
о009пр |
22.05.2006 |
5 |
о009пр |
23.05.2006 |
5 |
о009пр |
24.05.2006 |
5 |
п004пп |
22.05.2006 |
2 |
п004пп |
23.05.2006 |
2 |
п004пп |
24.05.2006 |
2 |
п009оо |
25.05.2006 |
Поломка |
р005рр |
22.05.2006 |
5 |
р005рр |
23.05.2006 |
5 |
р005рр |
24.05.2006 |
5 |
р007аа |
22.05.2006 |
3 |
р007аа |
23.05.2006 |
3 |
р007аа |
24.05.2006 |
3 |
с050ар |
22.05.2006 |
5 |
с050ар |
23.05.2006 |
5 |
с050ар |
24.05.2006 |
5 |
Запрос “ГрафикЛин”
Формирует таблицу, содержащую фамилии водителей, даты, и номера маршрутов. Необходим, для составление графика работы водителей.
SELECT Водители.FIO, Водят.date, Водят.marshr & " " & Водят.avtob AS marshr
FROM Водители RIGHT JOIN Водят ON Водители.Pasp=Водят.Pasp;
Результат:
Фамилия И.О. |
дата |
маршрут+автобус |
Галич Н.О. |
24.05.2006 |
5 р005рр |
Петров А.И. |
24.05.2006 |
5 о009пр |
Жданов М.Ю. |
24.05.2006 |
5 с050ар |
Петров О.Н. |
23.05.2006 |
1 а007пп |
Сидоров С.А. |
22.05.2006 |
1 в007рп |
Егоров Л.Д. |
23.05.2006 |
1 в007рп |
Иванов А.В. |
22.05.2006 |
2 н006оо |
Зайцев О.С. |
23.05.2006 |
2 н006оо |
Бабушкин Р.Ю. |
22.05.2006 |
2 а004вп |
Кузнецов В.Н. |
23.05.2006 |
2 а004вп |
Белов А.С. |
22.05.2006 |
2 п004пп |
Белов И.С. |
23.05.2006 |
2 п004пп |
Кузнецов Н.А. |
22.05.2006 |
3 р007аа |
Нестеров П.М. |
23.05.2006 |
3 р007аа |
Быков П.А. |
22.05.2006 |
3 п009оо |
Швондер А.С. |
23.05.2006 |
3 п009оо |
Белов С.А. |
22.05.2006 |
4 в909ао |
Иванов С.Г. |
23.05.2006 |
4 в909ао |
Сидоров С.Л. |
22.05.2006 |
4 а070пр |
Нагорный Д.И. |
23.05.2006 |
4 а070пр |
Галич Н.О. |
22.05.2006 |
5 р005рр |
Титов П.М. |
23.05.2006 |
5 р005рр |
Еремеев О.П. |
22.05.2006 |
5 о009пр |
Петров А.И. |
23.05.2006 |
5 о009пр |
Старов П.В. |
22.05.2006 |
5 с050ар |
Жданов М.Ю. |
23.05.2006 |
5 с050ар |
Иванов И.И. |
24.05.2006 |
1 а007пп |
Егоров Л.Д. |
24.05.2006 |
1 в007рп |
Иванов А.В. |
24.05.2006 |
2 н006оо |
Кузнецов В.Н. |
24.05.2006 |
2 а004вп |
Белов А.С. |
24.05.2006 |
2 п004пп |
Нестеров П.М. |
24.05.2006 |
3 р007аа |
Быков П.А. |
24.05.2006 |
3 п009оо |
Белов С.А. |
24.05.2006 |
4 в909ао |
Запрос “ДобавНовАвтоб”
Добавляет строку в таблицу Автобусы.
INSERT INTO Автобусы ( avtob, Type )
VALUES (Forms!Автобусы!avtob, Forms!Автобусы!Type);
Результат:
Строка вида:
Forms!Автобусы!avtob |
Forms!Автобусы!Type |
Запрос “МаршВводНов”
Добавление строки в таблицу Маршруты
INSERT INTO Маршруты ( marshr, Nach_punkt, Konechn_punkt, Nach_dvij, Kon_vrema, int, Protaj )
VALUES (Forms!МаршВводНов!nom, Forms!МаршВводНов!nach, Forms!МаршВводНов!konech, Forms!МаршВводНов!nvr, Forms!МаршВводНов!kvr, Forms!МаршВводНов!int ,Forms!МаршВводНов!prot);
Результат:
Строка вида:
Forms!МаршВводНов!nom |
Forms!МаршВводНов!nach |
Forms!МаршВводНов!konech |
Forms!МаршВводНов!nvr |
Forms!МаршВводНов!kvr |
Forms!МаршВводНов!int |
Forms!МаршВводНов!prot |
Запрос “МаршВод”
Выбирает данные из таблицы Водители,
удовлетворяющие заданному
SELECT DISTINCT Водители.FIO, Водители.Pasp
FROM Водители RIGHT JOIN Водят ON Водители.Pasp=Водят.Pasp
WHERE (((Водят.marshr)=Forms!
Результат:
FIO |
Pasp |
Егоров Л.Д. |
3021 438954 |
Иванов И.И. |
3000 123034 |
Петров О.Н. |
3021 234945 |
Сидоров С.А. |
4000 576933 |
Запрос “МаршПоиск”
Выбирает данные из таблицы Маршруты, по заданным кольцам.
SELECT Маршруты.marshr, Маршруты.Nach_punkt, Маршруты.Konechn_punkt
FROM Маршруты
WHERE (Маршруты.Nach_punkt=Forms!
Результат:
marshr |
Nach_punkt |
Konechn_punkt |
2 |
пр. Сизова |
м. Пионерская |
3 |
м. Плошадь мужества |
м. Пионерская |
Запрос “МаршУдал”
Удаляет запись из таблицы Маршруты
DELETE *
FROM Маршруты
WHERE marshr=Forms!Маршруты!marshr;
Результат:
Удалена строка вида:
Forms!Маршруты!marshr |
Nach_punkt |
Konechn_punkt |
Nach_dvij |
Kon_vrema |
int |
Protaj |
Запрос “МахСтаж”
Выбор из таблицы Водители тех, у кого наибольший стаж
SELECT Водители.FIO, staj
FROM Водители
WHERE staj in (SELECT max(staj) FROM Водители);
Результат:
FIO |
staj |
Зайцев О.С. |
10 |
Бабушкин Р.Ю. |
10 |
Кузнецов В.Н. |
10 |
Белов И.С. |
10 |
Быков П.А. |
10 |
Белов С.А. |
10 |
Галич Н.О. |
10 |
Титов П.М. |
10 |
Жданов М.Ю. |
10 |
Запрос “НеВышли”
Формирует таблицу, из тех автобусов, которые находятся в ремонте, с пометкой о поломке, и автобусов, которым не нашлось водителей, с соответствующей пометкой.
На эту дату.
SELECT Автобусы.avtob,
"Нет водителя" as Причина
FROM Автобусы
WHERE (Автобусы.avtob not in (SELECT Водят.avtob FROM Водят WHERE date=date())) and
(Автобусы.avtob not in (SELECT Поломки.avtob FROM Поломки WHERE date=date()))
UNION SELECT Поломки.avtob,
"Поломка"
FROM Поломки
WHERE (date=date());
Результат:
avtob |
Причина |
а004вп |
Нет водителя |
а007пп |
Нет водителя |
а070пр |
Поломка |
в007рп |
Нет водителя |
в909ао |
Нет водителя |
н006оо |
Нет водителя |
о009пр |
Нет водителя |
п004пп |
Нет водителя |
п009оо |
Поломка |
р005рр |
Нет водителя |
р007аа |
Нет водителя |
с050ар |
Нет водителя |
Запрос “ПоКлассам”
Находит число водителей по классам.
SELECT Водители.klas, count(pasp) AS Человек
FROM Водители
GROUP BY Водители.klas;
Результат:
klas |
Человек |
A |
5 |
B |
15 |
C |
4 |
Запрос “ПоПарку”
Необходим для создания отчета по парку.
Находит какие водители, по какому маршруту, и на каких автобусах работают в эту дату.
SELECT Автобусы.Type, Автобусы.avtob, Водители.FIO, Маршруты.marshr, Маршруты.Nach_punkt, Маршруты.Konechn_punkt, Маршруты.Nach_dvij, Маршруты.Kon_vrema, Маршруты.Interval, Маршруты.Protaj
FROM Водители INNER JOIN (Маршруты RIGHT JOIN (Автобусы RIGHT JOIN Водят ON Автобусы.avtob=Водят.avtob) ON Маршруты.marshr=Водят.marshr) ON Водители.Pasp=Водят.Pasp
WHERE (Водят.date=date());
Результат:
Type |
avtob |
FIO |
marshr |
Nach_punkt |
Konechn_punkt |
Nach_dvij |
Kon_vrema |
Interval |
Protaj |
Лиаз (гармошка) |
р005рр |
Галич Н.О. |
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
Лиаз (гармошка) |
о009пр |
Петров А.И. |
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
Лиаз 05гв |
с050ар |
Жданов М.Ю. |
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
Экарус (гармошка) |
а007пп |
Иванов И.И. |
1 |
м. Старая деревня |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
15 |
110 |
Экарус (гармошка) |
в007рп |
Егоров Л.Д. |
1 |
м. Старая деревня |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
15 |
110 |
Лиаз 90гв |
н006оо |
Иванов А.В. |
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
Лиаз 05гв |
а004вп |
Кузнецов В.Н. |
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
Лиаз 05гв |
п004пп |
Белов А.С. |
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
Экарус (гармошка) |
р007аа |
Нестеров П.М. |
3 |
м. Плошадь мужества |
м. Пионерская |
00.01.1900 |
00.01.1900 |
15 |
100 |
Лиаз (гармошка) |
п009оо |
Быков П.А. |
3 |
м. Плошадь мужества |
м. Пионерская |
00.01.1900 |
00.01.1900 |
15 |
100 |
Лиаз 90гв |
в909ао |
Белов С.А. |
4 |
пр. Испытателей |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
20 |
60 |
Запрос “ПоПаркуСвод”
Формирует список общих характеристик по парку. Средний возраст водителей, Средний стаж вождения, общая протяженность маршрутов, количество водителей.
SELECT DISTINCT (SELECT sum(protaj) FROM Маршруты) AS [Общая
протяженность], (SELECT count(pasp) FROM Водители)
AS [Количество водителей], (SELECT round(avg(staj))
FROM Водители) AS [Средний стаж], (SELECT
round(avg(Date()-Водители.
FROM Водители INNER JOIN (Маршруты RIGHT JOIN (Автобусы RIGHT JOIN Водят ON Автобусы.avtob=Водят.avtob) ON Маршруты.marshr=Водят.marshr) ON Водители.Pasp=Водят.Pasp
WHERE (Водят.date=date());
Резульиат:
Общая протяженность |
Количество водителей |
Средний стаж |
Средний возраст |
570 |
24 |
7 |
25 |
Запрос “СвободныеАвтоб”
Формирует список автобусов, для которых не нашлось водителя.
SELECT Автобусы.avtob
FROM Автобусы
WHERE (Автобусы.avtob not in (SELECT Водят.avtob FROM Водят WHERE date=date())) and
(Автобусы.avtob not in (SELECT Поломки.avtob FROM Поломки WHERE date=date()));
Результат:
avtob |
а007пп |
в007рп |
н006оо |
а004вп |
п004пп |
Запрос “СвободныеВодители”
Формирует список водителей, для которых не нашлось автобуса.
SELECT Водители.pasp
FROM Водители
WHERE (Водители.pasp not in (SELECT Водят.pasp FROM Водят WHERE date=date()));
Результат:
pasp |
3021 234945 |
4000 576933 |
4000 455202 |
4000 455220 |
3021 347520 |
3021 485621 |
4000 673921 |
3021 452213 |
4000 789842 |
4000 509123 |
3000 906823 |
3000 762234 |
3000 542421 |
Запрос “СписАвтоб”
Формирует список автобусов на данном маршруте, в эту дату.
SELECT DISTINCT Водят.avtob, Водят.marshr, Водят.date
FROM Водят
WHERE (((Водят.marshr)=Forms!
Результат:
avtob |
marshr |
date |
а007пп |
1 |
25.05.2006 |
в007рп |
1 |
25.05.2006 |