Материал: Базы данных-конспект

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Внешние соединения

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

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

При использовании внешних соединений MS Access включает все записи из таблицы, образующей одну сторону отношений, но только совпадающие таблицы, образующие вторую сторону отношений.

Например, нам нужно получить информацию по всем клиентам, не имеющим заказы. Для этого необходимо обеспечить вывод всех клиентов из таблицы Клиенты и соответственно поля Заказано из таблицы Заказы, в том числе и для тех, у кого в данном поле ничего нет, т.к. нет записей в таблице Заказы. Потом можно задать условие в поле Заказано "is Null" определив тем самым, что в запросе нужно отобрать только клиентов не сделавших заказы.

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

  • вызвать бланк Запроса и добавить таблицы Заказы и Клиенты

  • изменить внутреннюю связь на внешнюю, для чего дважды щелкнуть мышью по линии, отражающей связь между двумя списками. При этом появится окно Параметры объединения, содержащие три опции:

  1. объединение только тех записей, в которых связанные поля обеих таблиц совпадают (данный режим устанавливается по умолчанию)

  2. объединение всех записей из "Клиенты" и только тех записей из Заказы, в которых связанные поля совпадают

  3. объединение всех записей из "Заказы" и только тех записей из "Клиенты", в которых связанные поля совпадают.

Если выбранный второй режим, то Линия связи между таблицами изменит свой вид:

Клиенты

1

Заказы

Код клиента

Код клиента

Стрелка указывает на таблицу, из которой будут выбранные только совпадающие поля.

Заказы Клиенты

Поля

Код клиента

Фамилия

Заказано

Табл

Клиенты

Клиенты

Заказы

Усл.отб.

Если просмотреть данный запрос без условия в поле Заказано is Null, то он будет иметь следующий вид:

Код клиента

Фамилия

Заказано

126

127

128

129

Иванов

Петров

Сидоров

Печкин

40

60

80

При вводе условия is Null из запроса исключается все строки с не нулевыми полями Заказано (его можно не выводить на экран).

Важно отметить, что поля связь была внутренней, не было разницы, поместить ли в запрос Код клиента из таблицы Клиенты или из таблицы Заказы, т.к. они бы совпадали.

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

Код клиента

Фамилия

Заказано

126

127

128

Иванов

Петров

Сидоров

Печкин

40

60

80

Такую же связь можно установить между таблицами Предприятие и Заказы. При этом можно поставить условие показать предприятия, сотрудники которых не делали заказы.

Тема 8. Итоговые запросы

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

Для создания итогового запроса, находясь в Конструкторе запросов необходимо выбрать команду Вид/Групповые операции ли кнопку _____ на панели инструментов. В бланке запроса появится новая строка с наименованием Групповая операция. В данной строке необходимо указать тип выполняемого вычисления:

SUM – суммирование

AVG – среднее значение

min, max – минимум, максимум

count –количество записей, содержащих значения

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

Информация

Поле

Зарплата

Имя таблицы

Сотрудники

Сортировка

Группировка

Sum

Вывод на экран

Тогда результатом запроса будет

Sum-Затраты

19890

Если в бланк запроса добавить еще два ряда заработной платы и выбрать в качестве групповой операции max и min, то запрос будет иметь вид:

Sum-Зарплата

Max-Зарплата

Min-Зарплата

19890

2000

300

Задание условий выборки в итоговых запросах

Например, нас интересует информация о суммарной, максимальной и минимальной заработной плате только по программистам.

Для этого нужно добавить в бланк запроса поле Должность, а затем в строке Групповая операция данного поля установить значение Условие. При выборе данного значения автоматически снимается флажок Вывод на экран и поле не выводится на экран при выполнении запроса. После этого в троке Условие отбора можно ввести Программист.

Группировка полей запроса

Группировка позволяет получить вычисляемую информацию о подгруппах записей в таблице Заказы по полю Код товара. Можно получить сведения о продажах товаров каждого вида.

Тогда нужно создать следующий запрос:

Поля

Код товара

Продано

Имя таблицы

Заказы

Заказы

Груп. операция

Группировка

Sum

Сортировка

Вывод на экран

Условие отбора

Результатом будет запрос такого вида:

Код товара

Sum_Продано

1

400

2

200

3

350

Если создать запрос, формирующий информацию о сумме, на которую продано товаров каждому клиенту, получим результат:

Код Клиента

Sum_Продано

22

500

33

320

44

130

Группировку можно выполнять по нескольким полям, образуя тем самым группы внутри групп.

Например, нужно получить информацию о том, какое количество товара каждого вида купил каждый клиент. Тогда в запросе будет присутствовать сразу три поля, причем и поле Код товара и Код клиента будет стоять значение Группировка. Результатом будет таблица:

Код клиента

Код товара

Sum_продано

22

1

200

22

2

100

33

2

150

33

3

140

44

1

200

Для изменения имен и готовых полей необходимо в строке Поле вызвать Свойства и во вкладке Общие в строке Подпись ввести имя поля.

Источник: https://studfile.net/preview/16530623/