Добавил:
@wequalwo Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Access / Access_3_Ivanov_S_0392

.docx
Скачиваний:
0
Добавлен:
08.09.2024
Размер:
553.96 Кб
Скачать

Найдем все записи, имеющие в поле Шифр заказа определенный набор букв;

Найдем в Наименование заказов все вхождения определенного сочетания символов:

Заменим одинаковые наименования:

Выполним замену шифра:

Выполним сортировку:

Текстовый фильтр:

Применим фильтры к заказам:

Запрос из таблицы Предприятие:

Результат:

Все города, в которых находятся предприятия:

Набор записей в данном случае является статическим.

Выведем информацию о двух самых дешевых заказах:

SELECT TOP 2 [Стоимость]

FROM Заказы

ORDER BY [Стоимость];

Результат:

О двух самых дорогих:

SELECT TOP 2 [Стоимость]

FROM Заказы

ORDER BY [Стоимость] DESC;

Результат:

Выведем информацию о предприятиях, находящихся в каких-либо двух городах:

SELECT DISTINCT TOP 2 Предприятия.Город

FROM Предприятия;

Результат:

Выведем информацию о заказах, в шифре которых содержится «11»:

SELECT Заказы.[Шифр заказа]

FROM Заказы

WHERE (((Заказы.[Шифр заказа]) Like "11*"));

Результат:

Заказы, дата которых находится в определенном диапазоне:

SELECT Выполнение.[Шифр заказа]

FROM Выполнение

WHERE (([Дата отгрузки]>#11/11/11#));

Результат:

Неотгруженные заказы:

SELECT Выполнение.[Шифр предприятия], Выполнение.[Шифр предприятия]

FROM Выполнение

WHERE (([Отметка о выполнении]=True));

Заказы, стоимость и объем которых находится в определенном диапазоне:

SELECT Заказы.[Шифр заказа]

FROM Заказы

WHERE [Стоимость] Between 0 And 1000 And [Объем] Between 0 And 100;

Заказы, стоимость или объем которых превышает определенную величину:

SELECT Заказы.[Наименование заказа]

FROM Заказы

WHERE (([Стоимость]<300));

Наименование, объем, плановая дата выполнения заказов, для которых не произведена еще отгрузка:

SELECT Заказы.[Наименование заказа], Заказы.Объем, Выполнение.[Дата выполнения]

FROM Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]

WHERE (((Выполнение.[Дата отгрузки]) Is Null));

Для предыдущего запроса изменим INNER JOIN на LEFT JOIN:

SELECT Заказы.[Наименование заказа], Заказы.Объем, Выполнение.[Дата выполнения]

FROM Заказы LEFT JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]

WHERE (((Выполнение.[Дата отгрузки]) Is Null));

Такой результат потому, что НеГорит не был в таблице «Выполнение», но LEFT JOIN добавил его (из таблицы «Заказы»), в отличие от INNER JOIN

В случае RIGHT JOIN ничего не изменится, поскольку новых полей в таблице «Выполнение» нет:

Выведем информацию о выполненных заказах (Стоимость, наименование, объем):

SELECT Заказы.Объем, Заказы.Стоимость

FROM Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]

WHERE [Выполнение].[Отметка о выполнении]=True;

Выведем информацию о предприятиях, объединив столбцы Город, Адрес и Телефон:

SELECT Город

FROM Предприятия

Union

SELECT Адрес

FROM Предприятия

Union

SELECT Телефон

FROM Предприятия;

Посчитаем среднюю стоимость и средний объем заказов с переименованием столбцов:

SELECT Avg (Заказы.Стоимость) As [Средняя стоимость], Avg (Заказы.Объем) As [Средний Объем]

FROM Заказы;

Вычислим среднюю цену одной единицы заказов:

SELECT DISTINCT Avg (Заказы.Стоимость) AS [Средняя стоимость]

FROM Заказы;

Определим количество заказов, выполняемых каждым предприятием:

SELECT DISTINCT Предприятия.[Название предприятия], count(Выполнение.[Шифр предприятия]) As [Количество]

FROM Предприятия INNER JOIN Выполнение ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]

GROUP BY Предприятия.[Название предприятия];

Определим количество предприятий в каких-либо двух городах. Запрос создадим двумя способами:

С ограничением числа выводящихся записей:

SELECT TOP 2 [Город], count([Город]) As [Количество предприятий]

FROM Предприятия

GROUP BY [Город];

и с ограничением числа записей пред выполнением группировки:

SELECT TOP 2 [Город], count([Город]) AS [Количество предприятий]

FROM Предприятия

WHERE Город = "Москва" Or Город = "Париж"

GROUP BY [Город];

Определим количество невыполненных заказов на каждом из предприятий:

SELECT Предприятия.[Название предприятия], count(Выполнение.[Шифр заказа]) AS [Количество невыполненных заказов]

FROM Предприятия INNER JOIN Выполнение ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]

WHERE Выполнение.[Отметка о выполнении] = False

GROUP BY Предприятия.[Название предприятия];

Общая стоимость выполненных заказов на предприятиях, с указанием названия и телефона:

SELECT Предприятия.[Название предприятия], Предприятия.[Телефон], sum(Заказы.[Стоимость]) As [Суммарная стоимость]

FROM Предприятия INNER JOIN (Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]) ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]

WHERE Выполнение.[Отметка о выполнении] = True

GROUP BY Предприятия.[Телефон], Предприятия.[Название предприятия];

Предприятия, которые не участвуют в выполнении заказов (с использованием подзапросов):

SELECT Предприятия.[Название предприятия], Предприятия.[Шифр предприятия]

FROM Предприятия

WHERE Предприятия.[Шифр предприятия] NOT IN (SELECT Выполнение.[Шифр предприятия] FROM Выполнение);

Заказы, в выполнении которых принимают участие предприятия, находящиеся в определенном городе (с использованием подзапросов):

SELECT Заказы.[Наименование заказа]

FROM Заказы INNER JOIN (Предприятия INNER JOIN Выполнение ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]) ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]

WHERE Предприятия.[Шифр предприятия] IN (SELECT Предприятия.[Шифр предприятия] FROM Предприятия WHERE Предприятия.[Город] = "Париж");

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

SELECT DISTINCT Предприятия.[Название предприятия]

FROM Предприятия INNER JOIN (Выполнение INNER JOIN Заказы ON Выполнение.[Шифр заказа] = Заказы.[Шифр заказа]) ON Предприятия.[Шифр предприятия] = Выполнение.[Шифр предприятия]

WHERE Заказы.[Шифр заказа] IN (SELECT Заказы.[Шифр заказа] FROM Заказы WHERE [Стоимость] < 1000);

Выведем адрес и телефон предприятия с запросом у пользователя шифра этого предприятия:

SELECT [Адрес], [Телефон]

FROM Предприятия

WHERE [Шифр предприятия] = [Введите шифр предприятия];

Информация о заказах, в шифрах которых имеются буквы, задаваемые пользователем:

SELECT Наимановане

FROM Заказы

WHERE Шифр Like [Буквы шифра];

Выведем шифры и объем заказов, у которых диапазон даты отгрузки задается пользователем:

SELECT Заказы.[Шифр заказа], Заказы.[Объем]

FROM Заказы INNER JOIN Выполнение ON Заказы.[Шифр заказа] = Выполнение.[Шифр заказа]

WHERE Выполнение.[Дата отгрузки] Between [Начальная дата] AND [Конечная дата];

Создадим запрос на добавление нового выполнения заказа:

INSERT INTO [Выполнение] ([Шифр предприятия], [Шифр заказа], [Дата выполнения:])

VALUES ("11G11", "11AA12", #10/20/19#);

Добавим в новую таблицу невыполненные заказы:

INSERT INTO [Невыполненные заказы] ([Шифр заказа])

SELECT Выполнение.[Шифр заказа]

FROM Выполнение

WHERE Выполнение.[Отметка о выполнении] = False;

Новые данные действительно появились:

Запрос на обновление:

Увеличим стоимость всех заказов на 10%, выполнив запрос с предварительным просмотром измененных данных, а затем проконтролируем результат:

UPDATE Заказы SET [Стоимость] = [Стоимость] * 1.1

Удалим какой-нибудь выполненный заказ:

DELETE [Невыполненные заказы].*

FROM [Невыполненные заказы]

WHERE [Шифр заказа] = '38FG37';

Удалим информацию о заказе из таблицы заказов (Каскадное удаление установлено):

DELETE Заказы.*

FROM Заказы

WHERE [Стоимость] > 100000;

Соседние файлы в папке Access