Возможности совместной обработки нескольких таблиц, связывание таблиц

Практическая работа №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. Какие операции связывания таблиц можно выполнить и как?

Сделать вывод по проделанной работе.