Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТУ_лаба №1.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
2.15 Mб
Скачать

З адание 2.17.

Выведите имена клиентов, официальный адрес и адрес доставки которых совпадают. 1. Создайте новый запрос.

2.Добавьте в запрос таблицы "Клиенты" и "Заказы".

3. Выберите в списке полей таблицы "Клиенты" поле "Адрес" и перетащите его на поле "АдресПолучателя" таблицы "Заказы". Это приводит к созданию соединения полей Адрес и АдресПолучателя. Линия, обозначающая связь, имеет с двух сторон точки, которые указывают на то, что соединение выполнено между полями, связь которых в схеме данных не задана, их имена не совпадают и они не являются первичными ключами. 4. Перетащите поля "Название" и "Адрес" таблицы "Клиенты", а затем поле "АдресПолучателя" таблицы "Заказы" на бланк запроса. 5. Задайте сортировку по возрастанию в столбце "Название. 6. Запустите запрос.

7. Чтобы подавить вывод одинаковых строк, необходимо изменить значение свойства "Уникальные значения" в бланке свойств запроса. Для отображения бланка свойств нажмите кнопку "Конструктор", а затем кнопку "Свойства" на панели инструментов. Если заголовком бланка является строка "Свойства списка полей" или "Свойства поля", щелкните по пустому месту, чтобы вывести свойства запроса. Установить «Уникальное значение» на «ДА». Кроме того, можно щелкнуть правой кнопкой мыши по свободной области верхней части окна запроса и выбрать в контекстном меню команду "Свойства".

8. Нажмите на панели инструментов кнопку "Запуск". Результирующее множество не содержит повторяющихся записей. Обратите внимание на количество записей.

9. Перейдите в режим SQL. Обратите внимание на то, что ключевое слово distinct инструкции select исключает записи, которые содержат повторяющиеся значения в отобранных полях. Исследуйте как влияет изменение свойства запроса "Уникальные значения" и "Уникальные записи" на оператор DISTINCT SELECT-предложения.

SELECT DISTINCT Клиенты.Название, Клиенты.Адрес, Заказы.АдресПолучателя

2.1.7. Создание внешнего соединения

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

Запрос, в котором участвуют таблицы с левым внешним соединением (left join в SQL), выводит все записи таблицы "один" с уникальным значением первичного ключа в независимости от того, имеются ли соответствующие им записи в таблице "многие". И наоборот, запрос, в котором участвуют таблицы с правым внешним соединением (right join в SQL), выводит все записи таблицы "многие" в независимости от того, имеются ли соответствующие им записи в таблице "один". Обычно, но не обязательно, записи таблицы "многие", которые не подчиняются ни одной записи в таблице "один", являются "висячими" и могут быть связаны отношением "многие-к-одному" с записями другой таблицы.

З адание 2.18.

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

1. Создайте новый запрос и добавьте в него таблицы "Сотрудники" и "Персональные мероприятия".

2. Перетащите поле "КодСотрудника" таблицы "Сотрудники" на поле "КодСотрудника" таблицы "Персональные мероприятия" для создания внутреннего соединения между ними.

3. Выделите и перетащите поля "Фамилия" и "Имя" таблицы "Сотрудники", а также поля "КодСотрудника" и "ДатаПлан" таблицы "Персональные мероприятия" соответственно в первые четыре столбца бланка запроса. 4. Выделите линию, соединяющую поля "КодСотрудника", щелкнув по ней. Увеличение толщины тонкого отрезка линии указывает на то, что линия выделена. 5. При двойном щелчке по любому из двух толстых отрезков линий по краям соединительной линии выводится бланк свойств запроса. В диалоговом окне "Параметры объединения" переключатель "1" задает обычное внутреннее соединение, переключатель "2" — левое внешнее соединение и переключатель "3" — правое внешнее соединение.

6. Задайте левое внешнее соединение, выбрав переключатель "2". 7. Запустите запрос. Три сотрудника не имеют записей в таблице "Персональные мероприятия".

Создание рекурсивного соединения

Рекурсивные соединения связывают поля одной таблицы. При этом требуется добавить в запрос копию таблицы, а затем задать соединение. В качестве примера рассмотрим запрос, в котором выводятся сотрудники, утвердившие мероприятия, за которые они ответственны, что запрещено внутренним распорядком компании "Борей".