
Найдем все записи, имеющие в поле Шифр заказа определенный набор букв;
Найдем
в Наименование заказов все вхождения
определенного сочетания символов:
Заменим одинаковые наименования:
Выполним замену шифра:
Выполним сортировку:
Текстовый фильтр:
Применим фильтры к заказам:
Запрос из
таблицы Предприятие:
Результат:
Все города, в которых находятся предприятия:
Набор записей в данном случае является статическим.
Выведем информацию о двух самых дешевых заказах:
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;