Возможности совместной обработки нескольких таблиц, связывание таблиц
Практическая работа №4
Тема: Создание запросов. Схема данных.
Цель: изучить основы работы с табличным языком запросов QBE, научится создавать запросы с использованием одной таблицы в режиме «конструктор», задавать сортировку, условие отбора, изменять свойства запроса. Создавать запросы на основе нескольких таблиц и выполнять операции, связывающие таблицы.
Ход работы
Запросы с использованием одной таблицы
1. Выбрать полную информацию о продуктах с сортировкой по алфавиту (Рис. 3-9). Обратите внимание, что для поля Продукт знак вывода на экран не установлен, чтобы это поле не выводить в запросе дважды
Рис. 3-9. Выборка всех продуктов с сортировкой по алфавиту
2. Исключение дубликатов (выдать перечень проданных продуктов без повторений) этот запрос является аналогом операции проекции реляционной алгебры; для исключения дубликатов необходимо установить свойство Уникальные значения: Да (Рис. 3-10)
Рис. 3-10. Исключение дубликатов
3. Задание условия отбора (выбрать поставщиков, в названии которых есть сокращение ООО). В запросе используется предикат Like для отбора части значения поля, символ * в данном контексте соответствует любому количестве цифр или символов
4. Задание нескольких условий отбора (выбрать поставщиков, в названии которых есть сокращение ООО, ОАО или ЗАО). Условия отбора, объединенные оператором ИЛИ, можно записывать каждое в своей строке условия отбора (Рис. 3-11,а) или в виде одного общего условия (Рис. 3-11, б), в любом случае результат запроса будет одинаковым (Рис. 3-11, в) 5. Задание нескольких условий отбора (выбрать поставщиков, в названии которых есть сокращение ООО и находящихся во Владивостоке (т.е. у которых КодГорода = 3)). Условия отбора, объединенные оператором И, должны быть записаны в одной строке условия отбора. Если условия относятся к одному и тому же полю, то условие можно записать в виде общего выражения (например, для выбора заказов за период с 1.02.04 по 31.03.04 условие можно записать так: >= #01.02.04# And <=#31.03.04#)
Рис. 3-12. Задание условий И
6. Задание диапазонов в запросах (выбрать поставки продуктов, цена поставки которых попадает в диапазон от 15 до 50 руб. включительно). Диапазон можно задать, используя конструкцию Between … And … (находится в интервале от … до …) (Рис. 3-13, а), или используя операторы сравнения >=, >, <, <= (Рис. 3-13, б).
Возможности совместной обработки нескольких таблиц, связывание таблиц
1. Декартово произведение. Декартово произведение может потребоваться для получения всех сочетаний значений таблиц. Получим все возможные сочетания поставщиков и продуктов, т.е. ВСЕ поставщики поставляют ВСЕ продукты. Для получения декартова произведения двух таблиц необходимо разместить в запросе две несвязанные таблицы (Рис. 3-14, а). На Рис. 3-14, б приведены только первые записи результата, т.к. количество результирующих записей при декартовом произведении составляет n*m, где n и m – количество записей исходных таблиц (в нашем случае 189).
2. Естественное соединение. Получить список продаж с характеристиками продуктов Поскольку продажи продуктов хранятся в таблице Продажи, а информация о продуктах – в таблице Продукты, то для получения необходимого результата в запросе нужно использовать обе таблицы, связанные по полю КодПрод (Рис. 3-15)
Рис. 3-15. Естественное соединение
3. Условное соединение. Получить названия и вес продуктов, проданных 2 января 2004г. В отличие от предыдущего запроса здесь добавляется условие отбора (Рис. 3-16)
Рис. 3-16. Условное соединение
4. Внешнее соединение. Получить поставщиков ни разу не поставивших продукты (Рис. 3-18). Т.е. таких поставщиков, которые есть в таблице Поставщики и, которых нет в таблице Поставки. Для установки этого вида соединения выберите пункт меню Вид/ Параметры объединения (Рис. 3-17) и в появившемся диалоговом окне установите нужный вид соединения (Рис. 3-18). Для поставщиков, у которых не оказалось соответствующей записи в таблице Поставки, поле КодПост (из таблицы Поставки) будет принимать неопределенное значение (Null-значение). Для выбора таких поставщиков необходимо указать условие отбора Is Null в соответствующем поле.
Рис. 3-18. Левое внешнее соединение
5. Пересечение таблиц. Найти продукты, информация о которых есть в обеих таблицах Продукты и НовыеПродукты
6. Соединение таблицы со своей копией. Выбрать из таблицы Продукты дубликаты по названию продуктов. Размещаемая в запросе копия таблицы получает новое название с префиксом _n, где n – номер копии таблицы в запросе. Необходимо найти дубликаты по названию продукта, т.е. такие записи, которые имеют одинаковые названия (связь между таблицами по полю Продукт) и разные коды продукта.
Письменно ответить на вопросы:
1. Описать этапы создания запросов в режиме «конструктор».
2. Как задаётся сортировка данных в поле таблицы?
3. Как изменить свойства запроса?
4. Как задать условие отбора данных в поле таблицы? Какое действие выполняет оператор Like?
5. Как задать несколько условий отбора в одном поле таблицы?
6. Как можно задать диапазон для условия отбора данных в поле таблицы?
7. Как создать запрос на основе нескольких таблиц?
8. Какие операции связывания таблиц можно выполнить и как?
Сделать вывод по проделанной работе.