- •Практическая работа 8,9.
- •Краткие теоретические сведения:
- •Случай несвязанных таблиц
- •Внутреннее объединение таблиц
- •Внешнее объединение таблиц
- •Использование мастера Записи без подчиненных
- •Самообъединение
- •Объединение таблиц по отношению неравенства
- •Отбор записей, формирующих группы
- •Отбор групп
Объединение таблиц по отношению неравенства
В большинстве случаев таблицы объединяются по условию равенства значений в полях связи, но допустимо объединение таблиц и по условию «неравенства». В этом случае условием связи может быть любой из операторов сравнения: >, >=, <, <=, <>.
Для создания запроса, использующего такие условия связи, можно поступить следующим образом:
1. Создать в окне конструктора связь типа равенства.
2. Перейти в режим SQL и заменить знак "=" другим оператором сравнения. Однако такой запрос уже нельзя представить в режиме конструктора.
Пример 5.20. Заменив знак "=" на "<>", в приведенной на стр. 93 инструкции SQL, можно создать запрос, объединяющий записи таблиц А и В с несовпадающими значениями в связанных полях. Его результат виден на рис. 5.30.
Рис. 5.30. Связь по неравенству
Соответствующая инструкция SQL имеет вид:
SELECT А.a1, В.b1 FROM А INNER JOIN В ON А.a1 <> В.b1;
Можно поступить иначе: не связывать таблицы в окне конструктора, а записать условие на несовпадение значений полей в строке условий. В нашем примере это условие накладывается на значения в поле a1 и выглядит так: <> [b1].
Соответствующая инструкция SQL имеет вид SELECT А.a1, В.b1 FROM А, В WHERE (((А.a1)<>[b1]));
Отбор записей, формирующих группы
В том случае, когда из групп должны быть исключены некоторые записи, нужно добавить в бланк запроса поле или поля, которые будут использованы для отбора нужных записей. Для создания условия отбора по данному полю нужно выбрать в строке Групповая операция значение Условие и ввести условие в строку Условие отбора. Access автоматически отключит вывод на экран значений этого поля.
Пример 5.23. Определить число студентов в каждой учебной группе, родившихся в 1973 году или позднее. Для этого нужно в бланк запроса включить дополнительно поле День рождения, выбрать в строке Групповая операция значение Условие и ввести условие отбора > 31.12.72. Access добавит к дате с двух сторон # и бланк запроса будет иметь вид, представленный на рис. 5.34.
Рис 5.34. Отбор записей в группах
После добавления этого условия в Access включит в формируемые группы лишь те записи, которые относятся к студентам, родившимся позднее 31 декабря 1972 года.
Пример 5.24. Определить средние баллы по информатике девушек в каждой учебной группе. Этот запрос использует данные из двух таблиц: Студенты и Сессия. В его бланк следует включить следующие поля (см. рис. 5.35):
Группа — используется для группировки записей;
Пол и Код экзамена — служит для отбора нужных записей в группах;
Оценка — по этому полю производится групповая операция
Avg (вычисление среднего значения среди оценок по информатике). Результат выполнения запроса представлен на рис. 5.36.
Рис 5.36. Итоговый результат
Чтобы получить значения средних баллов в таком (отформатированном) виде необходимо настроить свойства итогового поля Оценка. Для этого нужно щелкнуть правой кнопкой мыши по полю Оценка, открыть список его свойств и установить для свойства Формат поля значение Фиксированный, для свойства Число десятичных знаков — 2, а для свойства Подпись — Средний балл (см. рис. 5.37).
Рис 5.37. Установка свойств поля Оценка